Skip to content
This repository was archived by the owner on Jun 14, 2026. It is now read-only.

Repository files navigation

GlorIA - Sistema de Monitorización de Piscifactorías

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.

Node.js Vue 3 PostgreSQL PostGIS


Características Principales

  • 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

Tecnologías

Frontend

  • Vue 3 + Vite
  • MapLibre GL JS (mapas)
  • deck.gl (visualizaciones 3D)
  • Chart.js (gráficos)
  • Axios (HTTP client)

Backend

  • Node.js + Express
  • PostgreSQL 14 + PostGIS + TimescaleDB
  • Redis (caché)
  • node-cron (tareas programadas)

Fuentes de Datos


Instalación Rápida

Opción 1: Con Docker (Recomendado)

# 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 ps

URLs:

Opción 2: Instalación Local

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

Configuración de APIs Externas

OpenWeather API (Opcional pero recomendado)

  1. Registrarse en https://openweathermap.org/api
  2. Obtener API key gratuita
  3. Añadir a .env:
    OPENWEATHER_API_KEY=tu_api_key
    

Copernicus Marine Service (Opcional pero recomendado)

  1. Registrarse en https://marine.copernicus.eu/
  2. Aceptar términos de uso
  3. 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.


Estructura del Proyecto

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

Sincronización Automática de Datos

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)

Sincronización Manual

# Ejecutar sincronización inmediata
curl -X POST http://localhost:3000/api/sync/execute

# Ver estado
curl http://localhost:3000/api/sync/status

API Endpoints

Piscifactorías

  • GET /api/piscifactorias - Lista de piscifactorías
  • GET /api/piscifactorias/:id - Detalle de piscifactoría
  • GET /api/piscifactorias/:id/variables - Variables ambientales

Datos Ambientales

  • GET /api/datos-ambientales - Datos ambientales (con filtros)
  • GET /api/historico/:variable - Histórico de una variable

Alertas

  • GET /api/alertas - Lista de alertas
  • GET /api/alertas/piscifactoria/:id - Alertas de una piscifactoría

Otros

  • GET /api/datasets - Datasets disponibles
  • GET /api/puertos - Puertos de referencia
  • GET /api/health - Estado del sistema

Seguridad

Antes de desplegar en producción:

  • Cambiar todas las contraseñas por defecto
  • Generar JWT_SECRET seguro (min 64 caracteres)
  • Configurar CORS_ORIGIN con dominio específico
  • Configurar firewall
  • Activar rate limiting
  • Configurar backups automáticos

Testing

# Backend
cd backend
npm test

# Frontend
cd frontend
npm test

Datos Iniciales

El 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


Solución de Problemas

No se conecta a la base de datos

# Verificar que PostgreSQL está corriendo
# Windows: services.msc > postgresql
# Linux: sudo systemctl status postgresql
# Docker: docker-compose ps postgres

Puerto ya en uso

Cambiar el puerto en .env:

PORT=3001

Sin extensiones PostGIS/TimescaleDB

psql -U postgres -d gloria -c "CREATE EXTENSION IF NOT EXISTS postgis;"
psql -U postgres -d gloria -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"

Estado del Proyecto

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


Contribuir

  1. Fork el proyecto
  2. Crea una rama (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Añadir nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Contacto

email: ramajahede@gmail.com


Agradecimientos


Versión: 2.0.0 Última actualización: Enero 2026

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages