Saltar al contenido principal

Variables de entorno del backend

El backend valida su configuración al arrancar contra src/shared/infrastructure/services/environment-service/env-schema.json. Las 27 variables son obligatorias: si falta una sola, el proceso aborta.

Copia la plantilla y rellénala:

cd zertipower-zertibuilder/backend && cp .env.example .env
Nunca subas el .env

Contiene credenciales de producción, la clave secreta de Stripe y una clave privada de blockchain. Verifica que .env está en .gitignore.

Base de datos

VariableTipoDescripción
DATABASE_URLstringCadena de conexión que usa Prisma. Formato mysql://usuario:password@host:puerto/base. Con el Docker local: mysql://root:root@127.0.0.1:3306/zertipower-dev.
DB_HOSTstringHost que usan las consultas SQL directas (mysql2), independientes de Prisma.
DB_USERstringUsuario para esas consultas directas.
DB_PASSWORDstringContraseña para esas consultas directas.
DB_DATABASEstringNombre de la base de datos.
Dos rutas de acceso a la misma base

El backend usa Prisma y consultas SQL crudas con mysql2. Prisma lee DATABASE_URL; las consultas crudas leen DB_HOST/DB_USER/DB_PASSWORD/DB_DATABASE. Si ambos grupos no apuntan al mismo sitio, obtendrás errores incoherentes muy difíciles de diagnosticar. Manténlos sincronizados.

Servidor

VariableTipoDescripción
PORTintPuerto de escucha de la API. Por defecto 3000.
JWT_SECRETstringClave de firma de los tokens JWT. Cambiarla invalida todas las sesiones activas.
APPLICATION_NAMEstringNombre que aparece en los logs. Normalmente API.
VIEWS_FOLDERstringCarpeta de plantillas hbs (correo, páginas públicas). Valor esperado: src/shared/infrastructure/views/public.

URLs de los frontends

VariableTipoDescripción
FRONTEND_URLstringURL del Panel de Administración (http://localhost:4201). Se usa en redirecciones, no en CORS.
COMPTADOR_FRONTEND_URLstringURL del Contador / Smart Meter (http://localhost:4200).

La Calculadora no tiene variable propia y no la necesita: CORS es permisivo (cors: true en main.ts) y la Calculadora no recibe redirecciones del backend.

Google OAuth

VariableTipoDescripción
GOOGLE_CLIENT_IDstringClient ID de OAuth. Es el único método de login del Contador.
GOOGLE_CLIENT_SECRETstringClient secret correspondiente.

Servicios externos

VariableTipoDescripción
RADIATION_APIstringEndpoint del servicio de radiación solar (Wattabit).
RADIATION_API_CREDENTIALSstringCredenciales en formato literal usuario:password. El separador : es obligatorio.
ENERGY_PREDICTION_APIstringEndpoint del servicio de predicción (repositorio zp_energy_pred).
DATADIS_MONTHSintMeses de histórico a descargar de Datadis en cada sincronización.
TRADE_UPDATE_DAYSstringVentana en días para recalcular los intercambios de energía.

Estos servicios se consumen contra los endpoints reales también en local: no hay mocks. Sin conectividad, las tareas programadas que los usan fallan, pero el arranque del backend no se ve afectado.

Blockchain

VariableTipoDescripción
PKstringClave privada (64 caracteres hexadecimales) con la que se firman las transacciones on-chain.
Secreto crítico

PK es una clave privada. Quien la posea controla la wallet asociada y sus fondos. No la escribas en tickets, capturas ni documentación.

Stripe

VariableTipoDescripción
STRIPE_PRODUCT_IDstringIdentificador del producto (prod_…).
STRIPE_PRICE_KEYstringIdentificador del precio (price_…).
STRIPE_SECRET_KEYstringClave secreta de la API. En local debe ser siempre una clave de test (sk_test_…).

SMTP

VariableTipoDescripción
SMTP_USERstringUsuario del servidor de correo.
SMTP_DISPLAY_EMAILstringDirección que aparece como remitente.
SMTP_PASSWORDstringContraseña SMTP.
SMTP_SERVERstringHost del servidor SMTP.
SMTP_PORTintPuerto, habitualmente 465 (SSL).

En local pueden dejarse valores ficticios: el backend arranca igualmente y sólo fallará el envío real de correo (recuperación de contraseña, notificaciones).

Frontends: no usan .env

Los tres frontends Angular se configuran mediante archivos TypeScript en src/environments/:

MóduloArchivoClave a apuntar al backend
Panel Adminfrontend/src/environments/environment.development.tsapi_url: "http://localhost:3000"
Calculadoracalculadora/src/environments/environment.development.tsapi_url: "http://localhost:3000"
Contadorris3cat-smart-meter/src/environments/environment.development.tszertipower_url: "http://localhost:3000"

ng serve usa la configuración development, que sustituye environment.ts por environment.development.ts mediante fileReplacements en angular.json.