Files
vacaciones/README.md
T
juavillo 15fc6dac3b Vacaciones: app de peticiones de vacaciones para restaurante
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>
2026-06-11 16:45:36 +02:00

2.3 KiB

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

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.