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

  1. El usuario accede a la plataforma desde su navegador y se autentica.
  2. Desde el frontend, el usuario puede:
    • Crear un reporte (formulario + mapa).
    • Ver reportes existentes en un mapa.
    • Votar por problemas de su interés.
  3. El backend recibe estas solicitudes, procesa la información, valida los datos y responde con vistas renderizadas o redireccionamientos.
  4. Toda la información se guarda y consulta desde la base de datos MySQL.
  5. 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.