Para desarrolladores

Para desarrolladores

Repositorio y rama

  • GitHub: github.com/yorshnu-skneg/iFondita
  • Rama de trabajo: staging (staging = prod = GitHub). Se trabaja siempre sobre el servidor vía SSH, no en copias locales.
git clone git@github.com:yorshnu-skneg/iFondita.git
cd iFondita
git checkout staging

Estructura del monorepo

Monorepo npm workspaces (apps/*, packages/*) con Turbo.

iFondita/
├─ apps/
│  ├─ pos-backend/     # API Express + TS (puerto 3005)  → api.ifondita.com
│  ├─ pos/             # Frontend POS (3001)             → pos.ifondita.com
│  ├─ admin-central/   # Panel interno Fogón (3002)      → fogon.ifondita.com
│  ├─ advertiser-portal/ # Portal anunciantes (3003)     → ads.ifondita.com
│  ├─ restaurant-dashboard/ # Panel owner (3004)         → dashboard.ifondita.com
│  ├─ web/             # Landing (3006)                  → ifondita.com
│  ├─ fogon/           # Fogón BI (3007)                 → analytics.ifondita.com
│  ├─ aprovecho/       # App comensal (3008)
│  └─ mesero/          # App mesero Expo (bloqueada)
├─ docs/               # DATABASE_ERD.md, api/openapi.yaml
└─ docs-site/          # Esta documentación (Nextra, 3009) — aislada del workspace

Backend (pos-backend)

Compila TypeScript (src/dist/) y corre desde el compilado.

cd apps/pos-backend
npm install
NODE_OPTIONS=--max-old-space-size=2048 npx tsc   # el build necesita más memoria
pm2 restart pos-backend                           # siempre restart, nunca reload
  • Puerto 3005. Health: GET /api/health. Swagger: GET /api-docs/.
  • El rol de app en la DB es DML-only; el DDL se aplica como postgres (via sudo).

Esta documentación (docs-site, Nextra)

cd docs-site
npm install
npm run build        # next build
pm2 start npm --name ifondita-docs -- start   # next start -p 3009
# dev local:
npm run dev          # next dev -p 3009

Vive fuera del workspace npm (no bajo apps/) para no arrastrar las versiones de React/Next de las apps. Corre en el puerto 3009.

Deploy (flujo)

  1. Push a staging en GitHub.
  2. En el servidor: git pull origin staging.
  3. Rebuild de la app afectada (npx tsc para el backend, npm run build para las Next apps).
  4. pm2 restart <app> (nunca reload).

Nginx + Certbot enrutan cada subdominio al puerto PM2 correspondiente (renovación SSL automática).

Aliases SSH

AliasServidorUso
ssh ifondita46.62.243.250:2222Producción
ssh ifondita-staging46.62.240.130:2222Staging
  • Ambos con usuario deploy; el repo vive en /home/deploy/iFondita.
  • En staging, juanma tiene sudo NOPASSWD (sólo staging, nunca replicar en prod).

Fuentes de verdad

  • Schema: docs/DATABASE_ERD.md (generado desde information_schema/pg_catalog reales).
  • API: docs/api/openapi.yaml (generado desde los routers reales) → Swagger en api.ifondita.com/api-docs/.
  • Estado y decisiones: bóveda MiMente/01-Proyectos/iFondita/ (estado maestro + 00-Inbox/).