/home/ricardo/oxymas-control (Node.js + Express + Prisma + PostgreSQL)oxymas_control (usuario ricardo)oxymas-control.service (usuario ricardo, puerto :4000)control.oxymas.com → proxy a 127.0.0.1:4000 con SSL Let’s Encryptrecibos/ (HTML/PDF), public/ (panel), scripts/, backups/DATABASE_URL=postgresql://ricardo:Conf1gurar@127.0.0.1:5432/oxymas_control?schema=public JWT_SECRET=... REFRESH_SECRET=oxymas_refresh_secret_2025 REFRESH_TOKEN_DAYS=30 PORT=4000 RECIBOS_DIR=/home/ricardo/oxymas-control/recibos BASE_PUBLIC_URL=https://control.oxymas.com
express, cors, pino, dayjs, @prisma/client, pg, multerjsonwebtoken, bcrypt, cookie-parserpuppeteer (+ librerías del sistema para Chromium)prisma, nodemonnumero único)year, next)GET /health → okPOST /api/auth/login → Access (24h) + cookie Refresh (30d, HttpOnly Secure)POST /api/auth/refresh → nuevo Access (por cookie o header x-refresh-token)POST /api/auth/logout → limpia cookiePOST /api/auth/change-password (JWT) → cambia clave y sube tokenVersionGET /api/clientes?q= (público), POST /api/clientes (JWT)GET /api/cilindros, GET /api/cilindros?libres=1 (públicos), POST /api/cilindros (JWT)POST /api/movimientos (JWT), GET /api/movimientos/:id, GET /api/movimientos/recientesPOST /api/pagos (JWT)POST /api/recibos/:movId (JWT) → correlativo REC-YYYY-000001, HTML + PDFPOST /api/recibos/:movId/regenerar (JWT) → reescribe HTML/PDF con datos actualesGET /api/recibos?limit=50 (público) → lista recientes con URLs/recibos/*.html, /recibos/*.pdf (públicos)/ listado simple de recibos y movimientosCorrelativo por año, formato REC-YYYY-000001..pgpass seguro (600) para usuario ricardoscripts/backup.sh → pg_dump -F cbackups/backup.logsudo systemctl restart oxymas-controljournalctl -u oxymas-control -n 100 --no-pager/healthPara actualizar este documento: edita public/checklist.html y guarda.