Sistema web GIS para monitorización en tiempo real de condiciones oceanográficas y ambientales en piscifactorías, con sincronización automática de datos desde fuentes externas.
- Visualización GIS con MapLibre GL y deck.gl
- Monitorización en tiempo real de temperatura, salinidad, corrientes y oleaje
- Sincronización automática de datos desde Copernicus Marine y OpenWeather
- Sistema de alertas basado en umbrales configurables
- Series temporales optimizadas con TimescaleDB
- Datos geoespaciales con PostGIS
- Despliegue con Docker listo para producción
- Vue 3 + Vite
- MapLibre GL JS (mapas)
- deck.gl (visualizaciones 3D)
- Chart.js (gráficos)
- Axios (HTTP client)
- Node.js + Express
- PostgreSQL 14 + PostGIS + TimescaleDB
- Redis (caché)
- node-cron (tareas programadas)
- Copernicus Marine Service - Datos oceanográficos
- OpenWeather API - Datos meteorológicos
# Clonar repositorio
git clone https://github.com/nickhernd/webGIS-GlorIA
cd webGIS-GlorIA
# Configurar variables de entorno
cp .env.production.example .env
# Editar .env con tus credenciales
# Iniciar servicios
docker-compose up -d
# Verificar estado
docker-compose psURLs:
- Frontend: http://localhost:80
- Backend API: http://localhost:3000
- PgAdmin: http://localhost:5050
Ver la Guía de Instalación Completa para instrucciones detalladas.
Requisitos:
- Node.js 18+
- PostgreSQL 14+ con PostGIS y TimescaleDB
- Redis (opcional)
Pasos rápidos:
# 1. Base de datos
psql -U postgres -c "CREATE DATABASE gloria;"
psql -U postgres -d gloria -f databases/init.sql
psql -U postgres -d gloria -f databases/init-extensions.sql
psql -U postgres -d gloria -f databases/03-wave-config.sql
psql -U postgres -d gloria -f databases/04-initial-data.sql
# 2. Backend
cd backend
npm install
cp ../.env.local.example ../.env
# Editar .env con tu configuración
npm run dev
# 3. Frontend (en otra terminal)
cd frontend
npm install
npm run dev- Registrarse en https://openweathermap.org/api
- Obtener API key gratuita
- Añadir a
.env:OPENWEATHER_API_KEY=tu_api_key
- Registrarse en https://marine.copernicus.eu/
- Aceptar términos de uso
- Añadir a
.env:COPERNICUS_USERNAME=tu_email COPERNICUS_PASSWORD=tu_contraseña
Nota: Sin estas APIs, el sistema generará valores de ejemplo pero NO serán datos reales de las ubicaciones.
webGIS-GlorIA/
├── backend/ # Backend Node.js/Express
│ ├── src/
│ │ ├── routes/ # Rutas API
│ │ │ └── api-real-data.js
│ │ ├── services/ # Servicios
│ │ │ └── dataSync.js
│ │ ├── app.js # Configuración Express
│ │ ├── server.js # Servidor
│ │ └── db.js # Conexión DB
│ └── package.json
│
├── frontend/ # Frontend Vue 3
│ ├── src/
│ │ ├── components/ # Componentes Vue
│ │ ├── views/ # Vistas
│ │ ├── services/ # Servicios API
│ │ └── utils/ # Utilidades
│ └── package.json
│
├── databases/ # Scripts SQL
│ ├── init.sql # Esquema principal
│ ├── init-extensions.sql
│ ├── 03-wave-config.sql
│ └── 04-initial-data.sql
│
├── docker/ # Dockerfiles
│ ├── backend.Dockerfile
│ ├── frontend.Dockerfile
│ └── python.Dockerfile
│
├── docker-compose.yml # Docker compose desarrollo
├── docker-compose.prod.yml # Docker compose producción
├── .env.local.example # Ejemplo env desarrollo
└── .env.production.example # Ejemplo env producción
El sistema sincroniza datos automáticamente:
- Cada 12 horas: Datos oceanográficos (temperatura, salinidad, corrientes, oleaje)
- Cada hora: Actualización de alertas
- Diaria (2 AM): Limpieza de datos antiguos (>90 días)
# Ejecutar sincronización inmediata
curl -X POST http://localhost:3000/api/sync/execute
# Ver estado
curl http://localhost:3000/api/sync/statusGET /api/piscifactorias- Lista de piscifactoríasGET /api/piscifactorias/:id- Detalle de piscifactoríaGET /api/piscifactorias/:id/variables- Variables ambientales
GET /api/datos-ambientales- Datos ambientales (con filtros)GET /api/historico/:variable- Histórico de una variable
GET /api/alertas- Lista de alertasGET /api/alertas/piscifactoria/:id- Alertas de una piscifactoría
GET /api/datasets- Datasets disponiblesGET /api/puertos- Puertos de referenciaGET /api/health- Estado del sistema
Antes de desplegar en producción:
- Cambiar todas las contraseñas por defecto
- Generar
JWT_SECRETseguro (min 64 caracteres) - Configurar
CORS_ORIGINcon dominio específico - Configurar firewall
- Activar rate limiting
- Configurar backups automáticos
# Backend
cd backend
npm test
# Frontend
cd frontend
npm testEl sistema incluye datos de ejemplo:
- 5 piscifactorías
- 6 datasets configurados (temperatura, salinidad, corrientes, oleaje, meteorología, clorofila)
- 4 puertos de referencia
- Configuraciones de umbrales de alertas
Puedes modificarlos editando databases/04-initial-data.sql
# Verificar que PostgreSQL está corriendo
# Windows: services.msc > postgresql
# Linux: sudo systemctl status postgresql
# Docker: docker-compose ps postgresCambiar el puerto en .env:
PORT=3001
psql -U postgres -d gloria -c "CREATE EXTENSION IF NOT EXISTS postgis;"
psql -U postgres -d gloria -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"Backend con API RESTful completa Frontend con visualización GIS Base de datos con PostGIS y TimescaleDB Sincronización automática de datos Sistema de alertas Dockerización completa Documentación
- Fork el proyecto
- Crea una rama (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Añadir nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
email: ramajahede@gmail.com
- Copernicus Marine Service - Datos oceanográficos
- OpenWeather - Datos meteorológicos
- MapLibre GL JS - Mapas
- deck.gl - Visualizaciones 3D
Versión: 2.0.0 Última actualización: Enero 2026