Monorepo TypeScript para la plataforma de gestión de servicios digitales de Facelad. Incluye una API NestJS, un panel web React, una app móvil Expo y el sitio de documentación Docusaurus.
| Workspace | Propósito | Stack |
|---|---|---|
@facelad/api |
API REST y lógica de negocio | NestJS 11, Prisma 7, PostgreSQL 17 |
@facelad/web-admin |
Operación interna | React 19, Vite 8, TanStack Query |
@facelad/mobile |
Aplicación de clientes | Expo SDK 57, React Native 0.86, Expo Router |
@facelad/docs |
Documentación de producto y técnica | Docusaurus 3 |
Los contratos HTTP, el cliente de API y los tokens visuales viven en packages/. Ninguna aplicación importa código fuente de otra aplicación.
- Node.js
24.15.x - pnpm
11.15.1mediante Corepack - Docker Desktop para PostgreSQL y el entorno en contenedores
- Expo Go o un emulador para ejecutar la app móvil
En Windows con una política de PowerShell restrictiva, usa corepack.cmd pnpm o los ejecutables .cmd.
corepack enable
pnpm install
docker compose up -d postgresCrea apps/api/.env a partir de apps/api/.env.example. Para Expo en un dispositivo físico, crea apps/mobile/.env y reemplaza la IP de ejemplo por la IP local del computador.
pnpm db:migrate
pnpm db:seedEl seed puede ejecutarse varias veces y crea estas cuentas:
| Aplicación | Correo | Contraseña |
|---|---|---|
| Panel web | admin@facelad.cl |
FaceladDemo2026! |
| Panel web | operador@facelad.cl |
FaceladDemo2026! |
| App móvil | cliente@facelad.cl |
FaceladDemo2026! |
Estas credenciales son únicamente para desarrollo local.
Ejecuta cada proceso en un terminal:
pnpm dev:api
pnpm dev:web
pnpm dev:mobile- API:
http://localhost:3000/api/v1 - Swagger:
http://localhost:3000/api/docs - Panel web:
http://localhost:5173 - Expo: URL y QR indicados por Expo CLI
La documentación se inicia con pnpm docs.
El entorno web completo se puede iniciar con:
docker compose up --build
pnpm db:seedEsto expone el panel en http://localhost:5173 y la API en http://localhost:3000. PostgreSQL y los adjuntos usan volúmenes persistentes.
El almacenamiento local es deliberado para el MVP y limita la API a una instancia. Antes de escalar horizontalmente debe reemplazarse el adaptador local por almacenamiento S3 compatible.
pnpm lint
pnpm typecheck
pnpm test
pnpm build
docker compose config --quietDesde apps/mobile, pnpm dlx expo-doctor@latest valida las dependencias nativas.
apps/
api/ NestJS, Prisma y migraciones
mobile/ Expo Router y pantallas de cliente
web-admin/ Panel operativo React
packages/
api-client/ Cliente fetch y rotación coordinada
contracts/ Esquemas Zod y contratos HTTP
design-tokens/ Colores, espacios y tipografía
docs/ PRD, TRD y sitio Docusaurus
El backend es un monolito modular. Los paquetes compartidos son publicables y cada app tiene configuración propia, lo que permite separarlas en repositorios sin trasladar lógica de negocio a los clientes.
- Login, refresh rotativo, logout y aislamiento por empresa.
- Dashboard operativo y dashboard de cliente.
- Solicitudes con historial, notas internas, estados y reapertura por siete días.
- Empresas con varios usuarios y roles fijos
CLIENT,OPERATOR,ADMIN. - Lectura agregada de dominios, hosting y sitios.
- Modelo de pagos, suscripciones y renovaciones en CLP.
- Panel web y app móvil conectados al mismo contrato.
Mercado Pago real, correo, push, facturación fiscal y almacenamiento S3 quedan para el siguiente corte.