15fc6dac3b
Cargos configurables por ronda (por defecto Camarero/a, Encargado, Cocina), calendario con días recuadrados, recuento de compañeros del mismo cargo por día y minileyenda por mes. Panel de administración con login, rondas y exportación a Excel. Node + Express + SQLite, listo para Docker/Coolify. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
# Vacaciones 🌴
|
|
|
|
Aplicación web sencilla y pensada para el móvil con la que el equipo de un restaurante pide sus días de vacaciones.
|
|
|
|
## Cómo funciona
|
|
|
|
**Trabajadores**
|
|
1. Reciben una URL del tipo `https://tudominio.com/r/AbC123xyz`.
|
|
2. Escriben su nombre y eligen su cargo (los que el administrador haya definido al crear la ronda; por defecto Camarero/a, Encargado o Cocina).
|
|
3. Marcan en el calendario los días que quieren pedir y guardan.
|
|
4. En cada día ven cuántas personas **de su mismo cargo** ya lo han pedido (nunca quiénes). Cada mes muestra una pequeña leyenda cuando tiene días ya pedidos por compañeros.
|
|
5. Una cookie les identifica: si vuelven a entrar con el mismo navegador, ven y pueden editar su petición mientras la ronda siga abierta.
|
|
|
|
**Administrador** (`/admin`, protegido por contraseña)
|
|
- Crea rondas de peticiones por local y año; en cada ronda define los cargos disponibles (separados por comas) y se genera una URL nueva para compartir.
|
|
- Cierra una ronda (nadie puede pedir ni modificar) y puede reabrirla.
|
|
- Descarga un Excel con dos hojas: peticiones por persona y recuento por día y cargo.
|
|
|
|
## Ejecutar en local
|
|
|
|
```bash
|
|
npm install
|
|
npm start # http://localhost:3000
|
|
```
|
|
|
|
Variables de entorno:
|
|
|
|
| Variable | Por defecto | Descripción |
|
|
|---|---|---|
|
|
| `ADMIN_PASSWORD` | `admin` | Contraseña del panel `/admin`. **Cámbiala en producción.** |
|
|
| `PORT` | `3000` | Puerto HTTP |
|
|
| `DATA_DIR` | `./data` | Carpeta donde se guarda la base de datos SQLite |
|
|
|
|
## Desplegar en Coolify
|
|
|
|
1. Sube este repositorio a Git (GitHub, GitLab…).
|
|
2. En Coolify: **New Resource → Application**, conecta el repositorio y elige **Build Pack: Dockerfile**.
|
|
3. Puerto expuesto: `3000`.
|
|
4. En **Environment Variables** añade `ADMIN_PASSWORD` con una contraseña fuerte.
|
|
5. En **Storages** añade un volumen persistente montado en `/app/data` (ahí vive la base de datos SQLite; sin esto perderías los datos en cada deploy).
|
|
6. Asigna tu dominio y despliega.
|
|
|
|
Después entra en `https://tudominio.com/admin`, crea la primera ronda y comparte la URL con el equipo.
|
|
|
|
## Notas técnicas
|
|
|
|
- Node.js + Express + SQLite (`better-sqlite3`): un solo contenedor, sin servicios externos.
|
|
- Las sesiones de administrador se guardan en memoria: si se reinicia el contenedor solo hay que volver a iniciar sesión.
|
|
- Excel generado con `exceljs`.
|