Especificaciones de desarrollo de SIRVIT (Sistema integrado de registro de violencia intrafamiliar de Tunja) de medidas de protección para las comisarías de la ciudad de Tunja. --- Descripción: --- --- Backend: --- El proyecto SIRVIT fue desarrollado en Node.js (entorno de ejecución de código abierto y multiplataforma para JavaScript). La estructura general del backend del proyecto se manejó por medio de microservicios separados; esto quiere decir que se dividió en pequeños servicios independientes (carpetas). Cada servicio se divide en partes que contienen diferentes responsabilidades; estas partes son: controlador, rutas, modelo, server, .env, db y package.json. Ejemplo de estructura: ├── comisaria-service/ |---- controllers/ |--- comisariasController.js |--- db/ |--- config.js |--- models/ |--- comisarias.js |--- node_modules/ |--- routes/ |--- comisariasRoutes.js |--- .env |--- package-lock.json |--- package.json |--- server.js --- Cada parte tiene la siguiente función general: --- - Controlador: Contiene todas las acciones que se quieren realizar con la información, es decir, obtener, crear, editar y eliminar. - Rutas: Este archivo define las rutas o direcciones que entiende el servicio, diciéndole al sistema hacia dónde tiene que ir. - Modelo: Aquí se define cómo va a ser la estructura del servicio en la base de datos, tales como los atributos o el número de caracteres. - server: Este es el archivo que "enciende" todo el servicio. Cuando este se ejecuta, pone en marcha el servidor para que empiece a escuchar peticiones (acciones del controlador). - .env: Este archivo contiene toda la información sobre la base de datos. - db: Conexión entre el servidor y la base de datos, para que el programa sepa de dónde guardar u obtener la información. - package.json: Contiene todos los elementos esenciales del proyecto, como el nombre o todas las herramientas (librerías) necesarias para que el programa funcione correctamente. Algunos de los servicios contienen una carpeta llamada middleware; esta tiene la tarea de verificar si el usuario que está en el sistema tiene los permisos necesarios, específicamente el token (código de acceso) de cada usuario que se genera al ingresar (login). --- Servicios del programa: --- - Gateway - Medidas. - Usuarios. - Comisarías. - Roles. - Victimas. - Victimarios. --- Servicios principales: --- - Gateway - Medidas. - Usuarios. --- Servicio Gateway: --- El servicio Gateway es la CABEZA de todo el sistema. Sus funciones son: - RECEPCIÓN: Recibe todas las peticiones de todos los servicios - INTERPRETACIÓN: Interpreta lo que el usuario quiere hacer - REDIRECCIÓN: Redirige cada petición al servicio correcto - AUTENTICACIÓN: Verifica los usuarios al ingresar al sistema (login) - MONITOREO: Verifica el estado de cada uno de los servicios - REPORTE: Reporta si hay algún problema con algún servicio Sin el gateway, el sistema no sabría hacia dónde enviar las peticiones ni quién está intentando acceder. --- Shared-models: --- La carpeta shared models se encarga de asignar todas las conexiones entre los servicios, para que la información se relacione correctamente. --- Frontend: --- El desarrollo frontend se manejó por medio de 3 tecnologias: - HTML para la estructura principal de las paginas. - CSS para los estilos visuales; principales y responsivo. - JavaScript para las funcionalidades visuales y funcionalidades llamadas de backend; cada uno de estos se asignó a una carpeta separada que contiene todos sus archivos. --- Estructura del frontend: --- Frontend/ ├── CSS/ ├── HTML/ ├── Images/ └── JS/ └── PDF/ --- Tecnología Utilizada --- Backend: - Node.js (entorno de ejecución) - Express (framework para servidor) - Sequelize (ORM para base de datos: conecta código con MySQL) - MySQL (Base de datos) - JWT (JSON Web Tokens - para autenticación) - Dotenv (manejo de variables de entorno) Frontend: - HTML5 (Estructura) - CSS3 (Estilos) - JavaScript (Interactividad) Herramientas adicionales: - npm (Manejador de paquetes) - Git (control de versiones) - WampServer64 (Entorno local para MySQL)