4.4 KiB
Don Marco — Administración Financiera (LAN)
Aplicación web multiusuario para gestión de ingresos (ventas, servicios, alquileres), egresos (gastos diarios/fijos), personal y reportes consolidados. Pensada para operar en la red local de una pequeña empresa con un servidor central.
1. Stack tecnológico recomendado
| Capa | Tecnología | Motivo |
|---|---|---|
| Frontend | React 18 + Vite | UI rápida, componentes reutilizables para planillas dinámicas |
| Backend | Node.js + Express | API REST ligera, fácil de mantener en LAN |
| Base de datos | SQLite (better-sqlite3) |
Almacenamiento local en el servidor, sin instalar MySQL/PostgreSQL |
| Auth | JWT + bcrypt | Sesiones stateless, contraseñas hasheadas |
| Despliegue | Docker Compose + Nginx | Un solo comando en el servidor de la red |
Nota: Aunque mencionaste “almacenamiento local”, para multiusuario en red conviene SQLite en el servidor (no
localStoragedel navegador), para que todos vean los mismos datos. El token JWT sí se guarda enlocalStoragedel cliente.
2. Estructura del proyecto
DonMarcoBackend/
├── docker-compose.yml
├── README.md
├── .env.example
├── backend/
│ ├── Dockerfile
│ ├── package.json
│ └── src/
│ ├── index.js
│ ├── db.js
│ ├── seed.js
│ ├── middleware/auth.js
│ ├── routes/
│ │ ├── auth.js
│ │ ├── users.js
│ │ ├── sheets.js
│ │ └── reports.js
│ └── utils/calculations.js
└── frontend/
├── Dockerfile
├── nginx.conf
├── package.json
├── vite.config.js
└── src/
├── App.jsx
├── api/client.js
├── context/AuthContext.jsx
├── components/
│ ├── Layout.jsx
│ ├── IngresoSheet.jsx
│ ├── GastoSheet.jsx
│ └── PersonalSheet.jsx
├── pages/
│ ├── LoginPage.jsx
│ ├── HomePage.jsx
│ ├── ReportesPage.jsx
│ └── AdminPage.jsx
├── utils/calc.js
└── styles/global.css
3. Credenciales por defecto
| Usuario | Contraseña | Rol |
|---|---|---|
JEFE |
MACAN |
Superusuario / administrador |
Cambie la contraseña del JEFE en producción desde el panel de administración o actualizando la base de datos.
4. Funcionalidades implementadas
- Login seguro y menú con pestañas (Ventas, Servicios, Alquileres, Gastos, Personal, Reportes, Salir).
- Panel de administración: crear usuarios, contraseñas y permisos ver/editar por planilla.
- Planillas con filas en blanco al inicio y botón + para agregar líneas ilimitadas.
- Cálculos automáticos: Precio Total, Utilidad, totales de cierre.
- Gastos con clasificación diario / fijo / variable.
- Personal: hasta 10 mensualizados y 5 eventuales por registro.
- Reportes diario, semanal y mensual con filtro de fechas y selección de planillas.
- Cierre semanal de gastos diarios y consolidado mensual en reportes.
5. Ejecución con Docker (recomendado en el servidor LAN)
cd DonMarcoBackend
docker compose up -d --build
Acceso desde cualquier PC de la red:
- Web:
http://IP-DEL-SERVIDOR(puerto 80) - API directa (opcional):
http://IP-DEL-SERVIDOR:4000/api/health
6. Desarrollo local (sin Docker)
Terminal 1 — API:
cd backend
npm install
npm run dev
Terminal 2 — Web:
cd frontend
npm install
npm run dev
Abrir http://localhost:3000 (el proxy de Vite redirige /api al puerto 4000).
7. Variables de entorno
Copie .env.example a .env y defina al menos:
JWT_SECRET=un-secreto-largo-unico
En Docker, JWT_SECRET se lee desde el entorno del host o del archivo .env junto a docker-compose.yml.
8. Fórmula de reportes
Para diario, semanal y mensual (en el rango de fechas seleccionado):
Resultado = (Ventas + Alquileres + Servicios) − Total Gastos − Total Personal
El sistema indica UTILIDAD o PÉRDIDA según el signo del resultado neto.
Desarrollado como base funcional lista para ampliar (exportación PDF, respaldos automáticos, HTTPS con certificado interno, etc.).