Instalación y despliegue (para quien instala)

Requisitos, base de datos, variables de entorno y puesta en producción.

Requisitos

  • Servidor con Node.js 22 y PostgreSQL 13+ (o Docker).
  • El archivo de entorno con DATABASE_URL apuntando a tu base y SESSION_SECRET (obligatorio: genéralo con openssl rand -base64 32; la app no arranca sin él).
  • Correo (SMTP_* en el mismo archivo): funciona con Gmail usando una contraseña de aplicación (cuenta de Google › Seguridad › verificación en 2 pasos › contraseñas de aplicación). Con eso, los consolidados automáticos llegan al contador y las notificaciones email se envían de verdad; sin SMTP, todo queda en el log del worker.

Puesta en marcha

  1. Crea la base y aplica el esquema: createdb --encoding=UTF8 nailscontrol && psql -d nailscontrol -f db/ddl_nailscontrol.txt.
  2. Aplica los alters acumulados en orden (todos los db/alter_*.txt, alfanuméricamente: alter_auth_v2 → … → alter_wa_username_v1). Son idempotentes: puedes re-ejecutarlos sin daño.
  3. npm install && npm run build && npm start. Ejecuta el build con el mismo usuario que corre la app (no como root): si .next/ queda con archivos de root, el siguiente build falla con EACCES — se arregla con sudo rm -rf .next.
  4. Crea el primer administrador visitando /setup en tu dominio (solo aparece cuando no existe ninguno).

Para mostrar la plataforma (demo)

npm run demo levanta una instancia con datos de muestra en el puerto 4017, sin tocar tu base real. npm run demo:prod la sirve en modo producción.

Tareas automáticas

Ejecuta npm run worker junto a la app (pm2/systemd) para recordatorios de citas, sugerencias de retoque y avisos de mantenimiento.

Copias de seguridad

Además del respaldo JSON desde Finanzas, programa pg_dump diario de la base. Ese archivo + los archivos de uploads son todo lo que necesitas para restaurar.