# Sistema de Gestion de Recursos Hidricos (GRH) ## Descripcion General Sistema web para la gestion y monitoreo de medidores de agua, integrando dispositivos LoRaWAN a traves de The Things Stack (TTS). Permite el seguimiento de consumo, deteccion de anomalias y gestion de proyectos de medicion. ## Arquitectura del Sistema ``` ┌─────────────────────────────────────────────────────────────────┐ │ FRONTEND │ ├─────────────────────────────────────────────────────────────────┤ │ App Principal (React) │ Panel de Carga (React) │ │ Puerto: 5173 │ Puerto: 5174 │ │ - Dashboard │ - Carga CSV Medidores │ │ - Gestion Medidores │ - Carga CSV Lecturas │ │ - Gestion Proyectos │ │ │ - Consumo/Lecturas │ │ │ - Usuarios/Roles │ │ │ - Auditoria │ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ BACKEND API │ │ Puerto: 3000 │ ├─────────────────────────────────────────────────────────────────┤ │ Express.js + TypeScript │ │ - Autenticacion JWT │ │ - Control de Acceso por Roles │ │ - Webhooks TTS (LoRaWAN) │ │ - Jobs Programados (Cron) │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ BASE DE DATOS │ │ PostgreSQL │ ├─────────────────────────────────────────────────────────────────┤ │ - users, roles │ │ - projects, concentrators, gateways │ │ - meters, meter_readings, devices │ │ - notifications, audit_logs │ │ - tts_uplink_logs │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ SERVICIOS EXTERNOS │ ├─────────────────────────────────────────────────────────────────┤ │ The Things Stack (TTS) │ │ - Recepcion de datos LoRaWAN │ │ - Gestion de dispositivos IoT │ └─────────────────────────────────────────────────────────────────┘ ``` ## Estructura del Proyecto ``` water-project/ ├── src/ # Frontend principal (React + Vite) │ ├── api/ # Clientes API │ ├── components/ # Componentes React │ ├── hooks/ # Custom hooks │ ├── pages/ # Paginas de la aplicacion │ └── types/ # Tipos TypeScript │ ├── water-api/ # Backend API (Express + TypeScript) │ ├── src/ │ │ ├── config/ # Configuracion (DB, etc.) │ │ ├── controllers/ # Controladores HTTP │ │ ├── middleware/ # Middlewares (auth, audit) │ │ ├── routes/ # Definicion de rutas │ │ ├── services/ # Logica de negocio │ │ ├── validators/ # Validacion de datos │ │ ├── jobs/ # Tareas programadas │ │ └── utils/ # Utilidades │ └── sql/ # Scripts SQL │ ├── upload-panel/ # Panel de carga CSV (React + Vite) │ └── src/ │ ├── api/ # Cliente API │ └── components/ # Componentes de carga │ └── docs/ # Documentacion ``` ## Tecnologias Utilizadas ### Frontend - **React 18** - Framework UI - **Vite 5** - Build tool - **TypeScript** - Tipado estatico - **Tailwind CSS 4** - Estilos - **Material UI** - Componentes UI - **Recharts** - Graficos - **Lucide React** - Iconos ### Backend - **Node.js** - Runtime - **Express 4** - Framework web - **TypeScript** - Tipado estatico - **PostgreSQL** - Base de datos - **JWT** - Autenticacion - **Multer** - Upload de archivos - **node-cron** - Tareas programadas - **Zod** - Validacion de schemas ### Servicios Externos - **The Things Stack (TTS)** - Integracion LoRaWAN ## URLs de Produccion | Servicio | URL | |----------|-----| | App Principal | https://sistema.gestionrecursoshidricos.com | | Panel de Carga | https://panel.gestionrecursoshidricos.com | | API | https://api.gestionrecursoshidricos.com | ## Documentacion Detallada - [Manual de Usuario](./MANUAL_USUARIO.md) - [Documentacion API](./API.md) - [Guia de Instalacion](./INSTALACION.md) - [Panel de Carga CSV](./UPLOAD_PANEL.md) - [Arquitectura y Base de Datos](./ARQUITECTURA.md)