Desarrolladores
Arquitectura
Estructura del monorepo pnpm + Turborepo, las 6 apps y la carpeta infra/.
Valwisp es un monorepo pnpm 9 workspaces + Turborepo 2, multi-tenant: cada ISP es
un Tenant, y toda consulta a base de datos debe filtrar por tenantId.
Apps (apps/*)
| App | Stack | Qué es |
|---|---|---|
valwisp-api | NestJS 10 | Backend REST — ver API REST |
valwisp-dashboard | React 18 + Vite + Tailwind + shadcn/ui + Zustand | Dashboard web del ISP |
valwisp-mobile | Expo SDK 55 + React Native | App móvil, tabs por rol |
valwisp-landing | React + Vite (SSR/prerender) | Marketing, sin routing de cliente |
valwisp-agent | Node CLI/daemon | Bridge cloud↔on-prem (ver Agente Local) |
valwisp-agent-desktop | Electron | Wrapper de escritorio del agente |
Infraestructura (infra/*)
| Carpeta | Qué es |
|---|---|
infra/freeradius/ | Servidor RADIUS propio de Valwisp — ver FreeRADIUS |
infra/management-vpn/ | VPN de gestión (IKEv2/L2TP) — ver VPN de gestión, nota: no versionado en este repo |
infra/evolution-api/, infra/wa-worker-relay/ | Piezas de la integración de WhatsApp/ValChat |
infra/github-runner/ | Runner self-hosted de CI |
Hosting (dónde corre cada cosa — no confundir)
| Componente | Hosting |
|---|---|
| Dashboard, Landing | Vercel (auto-deploy en push a main) |
| API, Postgres, Redis | ecfera.cloud (contenedores Docker) |
El dashboard y el landing son sitios estáticos en Vercel — nunca se despliegan como
contenedor en el servidor. Solo la API, la base de datos y Redis corren en
ecfera.cloud. Ver Operaciones → Despliegue
para el detalle.
Paquetes compartidos
packages/ está planeado para librerías compartidas entre apps — hoy vacío/en
construcción.