⚙️ Documentación de Configuración del Proyecto¶
Esta sección detalla la configuración necesaria para el correcto funcionamiento y despliegue del sistema de riego desarrollado con Angular y Node.js.
🔧 Variables de Entorno (.env
)¶
Ubicación: /backend/.env
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=*****
DB_NAME=iansa_riego
PORT=3000
JWT_SECRET=mi_clave_secreta_segura
ET_URL=https://agrometeorologia.cl/evapotranspiracion/
RESUMEN_URL=https://agrometeorologia.cl/
⚠️ Nunca subir este archivo a GitHub. Está en
.gitignore
.
🌐 Configuración de environment.ts
¶
Desarrollo (frontend/environments/environment.ts
)¶
export const environment = {
production: false,
apiUrl: 'http://localhost:3000'
};
Producción (frontend/environments/environment.prod.ts
)¶
export const environment = {
production: true,
apiUrl: 'https://backend-riego-XXXXXX.a.run.app'
};
🐳 Docker¶
/backend/Dockerfile
¶
Define el backend Node.js con instalación de dependencias y configuración Express.
/frontend/Dockerfile
¶
Build de Angular y configuración con NGINX:
FROM node:22 AS build
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build -- --configuration production --base-href /
FROM nginx:alpine
COPY --from=build /app/dist/frontend-riego /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
🔁 Cloud Build y Deploy¶
/cloudbuild.yaml
¶
Ejecuta: - Build de frontend y backend - Push a Container Registry - Deploy a Cloud Run
.github/workflows/deploy.yaml
¶
CI/CD automático para main
:
- Test
- Build
- Deploy
🔐 Seguridad y JWT¶
Middleware (backend/authMiddleware.js
)¶
Protege endpoints usando token JWT.
Token desde backend (/login
)¶
const token = jwt.sign({ rut: usuario.rut, tipo: usuario.tipo }, process.env.JWT_SECRET, { expiresIn: "8h" });
🌍 Dominio y VPS / GCP¶
- Configurar
hostname
con dominio (ej.www.iansa-riego.cl
) - Vincular DNS al backend y frontend
- Asegurar puertos abiertos 80 y 443
- Activar SSL Let’s Encrypt o certbot
📁 Otros Archivos Importantes¶
angular.json
: configuración build Angularmkdocs.yml
: documentación del sistematsconfig.json
: compilador TypeScript.gitignore
: excluye.env
,node_modules
,dist/
, etc.
✅ Esta documentación ayuda a replicar y mantener la configuración del sistema en cualquier entorno.