Documento activo

Arquitectura Tecnica

Estructura del proyecto, componentes y flujo tecnico.

Volver al indice

Arquitectura Tecnica

1. Estilo general

El proyecto sigue una arquitectura monolitica PHP con renderizado del lado del servidor, uso intensivo de PDO para acceso a MySQL y organizacion por modulos funcionales.

No se observa un framework MVC formal. En su lugar, el sistema usa:

  • Archivos PHP por pagina o flujo
  • Helpers globales reutilizables
  • Un modelo base simple
  • Includes compartidos para layout
  • Scripts SQL y sincronizacion automatica

2. Puntos de entrada principales

Raiz del sistema

  • index.php
  • login.php
  • dashboard.php
  • logout.php

Rutas funcionales

  • views/admin/*
  • views/docente/*
  • views/estudiante/*
  • views/padre/*
  • publico/*
  • aula/*
  • biblioteca/*
  • mesa_partes/*
  • chat/*
  • foro/*
  • kiosko/*

3. Carpetas relevantes

config/

Contiene configuracion global, base de datos, correo y otros servicios. Los archivos mas importantes son:

  • config/config.php
  • config/database.php
  • config/mail.php

helpers/

Concentra logica transversal del sistema:

  • Autenticacion
  • CSRF
  • Notificaciones
  • Matricula
  • Curricula
  • Escalas de calificacion
  • Asistencia
  • Respaldos
  • Envio de correo
  • Tema visual
  • Seguridad de uploads

models/

Incluye un modelo base y logica base de usuario en models/Model.php.

includes/

Incluye layout compartido, header, footer, widgets y funciones complementarias.

views/

Organiza las vistas internas por rol o especialidad. La carpeta views/admin concentra gran parte de la administracion del sistema.

Modulos de primer nivel

Estas carpetas contienen modulos funcionales completos:

  • aula
  • biblioteca
  • chat
  • foro
  • mesa_partes
  • publico
  • kiosko

4. Flujo de arranque

El flujo tecnico normal de una pagina es:

  1. Incluir config/config.php
  2. Incluir config/database.php
  3. Iniciar o validar sesion
  4. Aplicar seguridad y contexto
  5. Ejecutar consultas y renderizar HTML

5. Responsabilidades de config/config.php

Este archivo es el nucleo de configuracion comun. Entre sus responsabilidades:

  • Definir BASE_PATH
  • Detectar HTTP/HTTPS
  • Construir BASE_URL y BASE_URI
  • Cargar vendor/autoload.php si existe
  • Definir constantes globales
  • Configurar sesion
  • Aplicar headers de seguridad
  • Proveer helpers de rutas y fecha
  • Registrar autoload simple de clases

6. Responsabilidades de config/database.php

Este archivo no solo abre la conexion PDO. Tambien:

  • Lee credenciales desde archivo externo o variables de entorno
  • Crea la instancia PDO
  • Sincroniza catalogos base
  • Completa roles
  • Ajusta columnas faltantes
  • Crea tablas auxiliares
  • Invoca helpers que amplian el esquema del sistema

Esto convierte la conexion a base de datos en un punto de inicializacion del modelo de datos.

7. Seguridad transversal

Se aplica a nivel de configuracion y helpers:

  • Sesion con cookie httponly
  • SameSite=Lax
  • Deteccion de HTTPS
  • CSP
  • X-Frame-Options
  • X-Content-Type-Options
  • CSRF
  • Sanitizacion basica de entradas

8. Autenticacion y autorizacion

La logica vive principalmente en helpers/Auth.php. Provee:

  • Login y logout
  • Verificacion de sesion
  • Redireccion obligatoria
  • Validacion por nivel minimo
  • Consulta del rol
  • Generacion de sidebars por rol
  • Permisos de modulo por tabla permisos_modulo

9. Subsistema Kiosko

El kiosko esta relativamente desacoplado del sistema principal, con:

  • Configuracion propia
  • Base y helpers propios
  • Autenticacion puente via SSO interno
  • Modulos de caja, monedero, ventas, boletas y pasarelas

10. Integraciones y servicios

Se identifican integraciones con:

  • PHPMailer
  • TCPDF
  • Mercado Pago
  • Culqi
  • Clip
  • Brevo Conversations
  • Servicios API de Peru

11. Testing presente

Existe una carpeta tests/ con pruebas tipo smoke o consistencia, por ejemplo:

  • tests/route_integrity_test.php
  • security_audit_test.php
  • security_audit_round2_test.php

No parece haber una suite automatizada completa por modulo, por lo que el soporte tecnico debe complementar con pruebas funcionales manuales.