Arrancar los cuatro módulos
Requisitos: Node.js, Docker y Git. Verificado con Node 26 y Docker 29.
Cada módulo ocupa una terminal distinta (los tres ng serve y el backend quedan en
primer plano).
0. Base de datos
docker compose -f docker-compose.db.yml up -d
docker exec -i mariadb-zertipower-local mariadb -u root -proot < sql/seed_minimo.sql
1. Backend — puerto 3000
cd zertipower-zertibuilder/backend && npm install
npx prisma generate
npm run start:dev
Arranque correcto cuando el log muestra las rutas mapeadas y Sync permissions.
Comprobación rápida (Swagger):
curl -o /dev/null -w "%{http_code}\n" http://localhost:3000/api
Debe responder 200. Y el login del seed:
curl -X POST http://localhost:3000/auth/login -H "Content-Type: application/json" -d "{\"user\":\"admin\",\"password\":\"admin123\"}"
Debe devolver access_token y refresh_token.
2. Panel de Administración — puerto 4201
cd zertipower-zertibuilder/frontend && npm install
npx ng serve --port 4201
Entra en http://localhost:4201 con admin / admin123. Deberías ver el menú
lateral y, en Participants → Communitats, la comunidad del seed con 2
participants; en Participants → Cups, los dos CUPS.
3. Calculadora — puerto 4202
cd zertipower-zertibuilder/calculadora && npm install
npx ng serve --port 4202
En http://localhost:4202, el botón Calcular energia abre el asistente de 6 pasos.
El desplegable del primer paso debe listar la localidad del seed (Barcelona).
4. Contador / Smart Meter — puerto 4200
cd ris3cat-smart-meter && npm install
npx ng serve --port 4200
En http://localhost:4200 carga la pantalla de acceso.
La pantalla de login del Contador ofrece únicamente "Iniciar sessió amb google".
No admite usuario y contraseña, de modo que el usuario del seed mínimo no sirve
para entrar. Ese acceso lo resuelve Zertiauth (auth.zertifier.com), un
servicio externo con su propio cliente de Google: no depende de
GOOGLE_CLIENT_ID, y configurar el acceso con Google del Panel no hace que
el Contador funcione.
Instalación de dependencias
Los tres frontends se instalan con normalidad. Si npm install falla por conflictos
de dependencias entre paquetes de Angular 17, usa:
npm install --legacy-peer-deps
Comprobación final
Con todo levantado, los cuatro puertos deben responder 200:
for p in 3000 4200 4201 4202; do curl -s -o /dev/null -w "$p -> %{http_code}\n" http://localhost:$p/; done