first commit
This commit is contained in:
134
README.md
Normal file
134
README.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# 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 `localStorage` del navegador), para que todos vean los mismos datos. El token JWT sí se guarda en `localStorage` del 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)
|
||||
|
||||
```bash
|
||||
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:**
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
**Terminal 2 — Web:**
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```env
|
||||
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.).
|
||||
Reference in New Issue
Block a user