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:

Arquitectura del Sistema

sistemaarquitectura

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.

UserRoleSystem

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

esquema_database

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 disponibles
  • vista_material_alquilado: Muestra los materiales actualmente prestados
  • vista_historial_material: Muestra el historial de préstamos de materiales
  • vista_mensaje_help: Muestra las solicitudes de ayuda con información del usuario
  • vista_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:

  1. Funcionalidad de inicio/cierre de sesión
  2. Control de acceso basado en roles
  3. Restablecimiento de contraseña vía correo electrónico
  4. 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:

  1. Organización jerárquica (categorías → temas → publicaciones)
  2. Capacidad para crear, editar y eliminar publicaciones
  3. Moderación por parte de usuarios con roles adecuados
  4. 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

  1. Creación de evento con detalles (título, descripción, fecha, hora, ubicación)
  2. Registro para eventos
  3. Navegación y filtrado de eventos
  4. Designación de eventos solo para adultos
  5. 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:

  1. Los usuarios pueden presentar solicitudes de ayuda
  2. Administradores/moderadores pueden responder
  3. Seguimiento de conversaciones
  4. 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

FlujoDeDatos

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:

  1. Sistema de control de acceso basado en roles con cuatro tipos de usuarios distintos
  2. Un sistema de foros para debates comunitarios
  3. Sistema de gestión de eventos para organizar sesiones de juegos
  4. Sistema de gestión de materiales para el seguimiento y el préstamo de artículos físicos
  5. 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.