Diseño Arquitectónico - UESSalexmendoza/Lenguajes-de-Programacion GitHub Wiki
🏗️ Diseño Arquitectónico
El sistema VozUrbana ha sido diseñado bajo una arquitectura cliente-servidor tradicional, utilizando el patrón Modelo-Vista-Controlador (MVC), facilitado por el framework Django. Este enfoque permite una separación clara entre la lógica del negocio, la presentación de los datos y su persistencia, lo que contribuye a la mantenibilidad y escalabilidad del sistema.
🧱 Componentes principales de la arquitectura
1. Cliente (Frontend)
- Tecnología: HTML5, CSS3, JavaScript y Bootstrap.
- Función: Permite la interacción del usuario con el sistema mediante formularios, mapas y paneles visuales.
- Características: interfaz amigable, diseño responsivo y validación básica del lado del cliente.
2. Servidor (Backend)
- Tecnología: Python y Django.
- Función: Procesa las solicitudes del cliente, ejecuta la lógica del sistema, gestiona los reportes y controla el acceso por roles.
- Estructura:
- Modelos: definen las estructuras de datos (usuarios, reportes, votos).
- Vistas: gestionan las solicitudes HTTP.
- Templates: renderizan el contenido para el navegador.
- Forms: gestionan formularios y validación.
3. Base de datos (Persistencia)
- Sistema: MySQL
- Estructura: contiene tablas relacionales para usuarios, reportes, votos y registros administrativos.
- Función: Almacena de manera segura y estructurada la información del sistema.
4. Servicios externos
- Google Maps API: permite la geolocalización precisa de los reportes mediante mapas interactivos.
- SMTP (opcional): se usará para envío de correos electrónicos en procesos de recuperación de contraseña.
🔁 Flujo general del sistema
- El usuario accede a la plataforma desde su navegador y se autentica.
- Desde el frontend, el usuario puede:
- Crear un reporte (formulario + mapa).
- Ver reportes existentes en un mapa.
- Votar por problemas de su interés.
- El backend recibe estas solicitudes, procesa la información, valida los datos y responde con vistas renderizadas o redireccionamientos.
- Toda la información se guarda y consulta desde la base de datos MySQL.
- El administrador puede acceder al panel de gestión para actualizar el estado de los reportes.
🔐 Seguridad y control de acceso
- Acceso autenticado por roles: ciudadano, moderador/administrador.
- Protección contra CSRF integrada con Django.
- Validación tanto en el frontend como en el backend.
- Contraseñas almacenadas con hashing seguro.
Este diseño arquitectónico permite un desarrollo ágil, una implementación modular y deja abierta la posibilidad de futuras mejoras como el desacoplamiento del frontend o la creación de una API REST para aplicaciones móviles.