- docker-compose: 4 apps + api + postgres/redis (red interna, sin puertos expuestos), healthchecks, restart policies, volumenes - nginx: client_max_body_size 10m, headers X-Forwarded, webroot certbot, certs montados desde /etc/letsencrypt (renovacion sin copiar) - scripts/backup.sh: sqlite/pg_dump + uploads con retencion 30 dias - README con instrucciones de deploy y pendientes
56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# FRASA Ecosystem
|
|
|
|
Ecosistema comercial de Frasa Desarrollos S.A.P.I. de C.V.
|
|
|
|
## Componentes
|
|
|
|
| Componente | Ruta | Descripción |
|
|
|---|---|---|
|
|
| `apps/landing` | `/` | Entrada al ecosistema |
|
|
| `apps/cotizador` | `/quote/` | Cotizador financiero (4 propuestas, PDF ANEXO A) |
|
|
| `apps/alta-clientes` | `/client/` | Alta de clientes (wizard, firma digital, PDFs PLD) |
|
|
| `apps/cobranza` | `/pay/` | Planes de enganche, vencidos, estados de cuenta |
|
|
| `api-gateway` | `/api/` | Express 5 + Prisma + integración Monday.com |
|
|
|
|
## Desarrollo local
|
|
|
|
Cada app es un proyecto Vite independiente: `npm install && npm run dev` (o `npm run preview` tras `npm run build`). Tests: `npx vitest run` en cada paquete. El API: `cd api-gateway && npm install && npx prisma migrate dev && npm run dev`.
|
|
|
|
Variables de entorno: copiar `.env.example` a `.env` y completar (el `.env` nunca se commitea).
|
|
|
|
## Deploy (servidor Ubuntu + Docker)
|
|
|
|
```bash
|
|
git clone https://git.consultoria-as.com/consultoria-as/FRASA-CAS.git /opt/frasa-ecosystem
|
|
cd /opt/frasa-ecosystem
|
|
cp .env.example .env && nano .env # completar secretos
|
|
|
|
# SSL: webroot (funciona con nginx corriendo y renueva sin downtime)
|
|
docker compose up -d nginx # primer arranque SIN ssl: ver nota abajo
|
|
certbot certonly --webroot -w /var/www/certbot -d frasadesarrollos.ddns.net
|
|
|
|
docker compose build && docker compose up -d
|
|
docker compose logs -f api
|
|
curl https://frasadesarrollos.ddns.net/api/health
|
|
```
|
|
|
|
Nota primer arranque: mientras no existan los certs, comenta el bloque `server 443` de
|
|
`nginx/nginx.conf` (o usa un cert autofirmado temporal); después de expedir, restaura y
|
|
`docker compose restart nginx`. Renovación: `certbot renew --deploy-hook "docker compose -f /opt/frasa-ecosystem/docker-compose.yml restart nginx"`.
|
|
|
|
Antes del deploy, cambiar en `apps/landing/src/data/modulos.ts` las URLs absolutas de
|
|
preview por rutas relativas (`/quote/`, `/client/`, `/pay/`) y rehacer el build.
|
|
|
|
Backup: `scripts/backup.sh` (cron sugerido `17 2 * * *`).
|
|
|
|
## Monday.com
|
|
|
|
Workspace `Frasa-CAS`. Tableros: Contactos, Desarrollos, Unidades (inventario importado), Leads, Oportunidades, Apartado, Ventas. Los board IDs están en `.env.example`. Webhook: `POST /api/webhooks/monday` (responde el challenge de activación).
|
|
|
|
## Pendientes conocidos
|
|
|
|
- Migrar Prisma de SQLite a Postgres 16 (dinero a `Decimal`).
|
|
- Auth JWT, helmet, rate-limit, CORS restringido (hoy: red interna).
|
|
- Self-hostear worker/wasm de tesseract.js (OCR sin internet).
|
|
- Automatizaciones Monday (round-robin, recordatorios 10 días) y cron de cobranza en el API.
|