Visión General - ManuelJDonoso/Proyecto_daw GitHub Wiki
Crónicas de Mérida – Visión General
Propósito y Alcance
Este documento ofrece una visión completa de Crónicas de Mérida, una aplicación web diseñada para apoyar a comunidades de juegos de mesa.
Cubre la arquitectura del sistema, los componentes principales, los roles de usuario y cómo se interconectan los diferentes subsistemas.
Esta página sirve como punto de entrada para comprender toda la aplicación antes de profundizar en subsistemas específicos.
Para obtener información detallada sobre componentes individuales, consulta sus páginas dedicadas:
- Para detalles de enrutamiento, consulta el Sistema de Enrutamiento.
- Para autenticación de usuarios, consulta el Sistema de Autenticación.
- Para funcionalidad del foro, consulta el Sistema de Foro.
- Para gestión de materiales, consulta la Gestión de Materiales.
Arquitectura del Sistema
Crónicas de Mérida sigue una arquitectura MVC (Modelo-Vista-Controlador) simplificada con enrutamiento centralizado.
La aplicación se construye alrededor de varios subsistemas principales que proporcionan funcionalidades específicas.
La aplicación está estructurada con un enrutador central (index.php
) que dirige las solicitudes a las vistas apropiadas basadas en el parámetro pag
.
Cada subsistema implementa funcionalidades específicas mientras interactúa con la base de datos compartida.
Sistema de Roles de Usuario
La aplicación implementa un sistema jerárquico de control de acceso basado en roles a través de la jerarquía de clases Usuario
.
Cada rol hereda permisos de los roles inferiores y añade capacidades adicionales.
Este diagrama ilustra la estructura de herencia de los roles de usuario y sus capacidades:
Rol | Nivel de Acceso | Capacidades |
---|---|---|
Visitante | Mínimo | Ver contenido, crear cuenta |
Jugador | Básico | Participar en eventos, usar el foro, pedir materiales, solicitar ayuda |
Moderador | Ampliado | Todas las capacidades de Jugador + crear/moderar eventos, procesar solicitudes de ayuda |
Administrador | Completo | Todas las capacidades de Moderador + gestionar usuarios, asignar roles, administrar materiales |
Cuando un usuario inicia sesión, se instancia la clase apropiada basada en su rol almacenado en la base de datos.
Esquema de la Base de Datos
Los datos de la aplicación se almacenan en una base de datos MySQL con múltiples tablas interconectadas.
Estas tablas representan las entidades principales y sus relaciones.
La base de datos incluye vistas para consultas comunes, tales como:
vista_material_disponible
: Muestra los materiales disponiblesvista_material_alquilado
: Muestra los materiales actualmente prestadosvista_historial_material
: Muestra el historial de préstamos de materialesvista_mensaje_help
: Muestra las solicitudes de ayuda con información del usuariovista_notificacion_procesando
: Muestra las notificaciones activas
Subsistemas Principales
Sistema de Enrutamiento
Todas las solicitudes se procesan a través de index.php
, que dirige a los usuarios a las vistas apropiadas basadas en el parámetro de consulta pag
.
Esta implementación proporciona un punto de control centralizado para la navegación y el control de acceso.
Ejemplo:
URL: example.com/index.php?pag=foro
-> dirige a views/foro.php
El enrutador también verifica los permisos del usuario antes de cargar páginas restringidas.
Gestión de Usuarios
Maneja la autenticación de usuarios, el registro y la gestión de roles.
El sistema implementa:
- Funcionalidad de inicio/cierre de sesión
- Control de acceso basado en roles
- Restablecimiento de contraseña vía correo electrónico
- Gestión del perfil de usuario
Cada usuario en el sistema está representado por una instancia de una de las clases específicas de rol definidas en usuario.php
.
Sistema de Foro
Una plataforma de discusión estructurada con categorías, temas y publicaciones.
Las características incluyen:
- Organización jerárquica (categorías → temas → publicaciones)
- Capacidad para crear, editar y eliminar publicaciones
- Moderación por parte de usuarios con roles adecuados
- Interfaz sensible con el redimensionamiento de la sección
El foro está diseñado para fomentar la discusión de la comunidad en torno a temas de juego.
Gestión de eventos
Permite la creación y gestión de eventos de juego. Características principales
- Creación de evento con detalles (título, descripción, fecha, hora, ubicación)
- Registro para eventos
- Navegación y filtrado de eventos
- Designación de eventos solo para adultos
- Límites de capacidad de eventos
Los eventos pueden ser en línea o en persona, e incluir detalles sobre el maestro del juego (organizador).
Gestión de materiales
Facilita la comunicación entre usuarios y administradores:
- Los usuarios pueden presentar solicitudes de ayuda
- Administradores/moderadores pueden responder
- Seguimiento de conversaciones
- Vigilancia de la situación (activa/resuelto)
El sistema permite conversaciones de varios mensajes en torno a temas específicos.
Tecnologías
Crónicas de Mérida se construye con las siguientes tecnologías:
Componente | Tecnología |
---|---|
Idioma del lado del servidor | PHP |
Base de datos | MySQL con vistas personalizadas |
Front-end | HTML, CSS, JavaScript |
Autenticación | Implementación personalizada de PHP |
Estilo | CSS personalizado con puntos de ruptura sensibles |
Acceso a los datos | DOP para conexiones de base de datos |
La aplicación utiliza un enfoque arquitectónico simplificado sin depender de marcos externos, lo que lo hace autocontenido y fácil de implementar.
Flujo de datos
Este diagrama ilustra el flujo típico de datos a través de la aplicación. Todas las solicitudes se tramitan a través del router central en index.php, que determina qué vista a cargar en función de la pagparámetro. Las vistas luego interactúan con los modelos, que se comunican con la base de datos.
Resumen
Crónicas de Mérida es una amplia aplicación web diseñada para comunidades de juegos de mesa, con:
- Sistema de control de acceso basado en roles con cuatro tipos de usuarios distintos
- Un sistema de foros para debates comunitarios
- Sistema de gestión de eventos para organizar sesiones de juegos
- Sistema de gestión de materiales para el seguimiento y el préstamo de artículos físicos
- Un sistema de ayuda/notificación para soporte del usuario
La aplicación sigue un enfoque centralizado de enrutamiento con una arquitectura MVC simplificada, lo que la hace sostenible y extensible. Cada subsistema está diseñado para trabajar de forma independiente al mismo tiempo que se integra perfectamente con el flujo de aplicación global.