docs: actualizar diagrama y descripcion de arquitectura monorepo en README.md

This commit is contained in:
2026-09-23 14:15:11 -03:00
parent 6bfaab634f
commit 7a3468cd9f
+41 -16
View File
@@ -31,35 +31,60 @@ Fase 6: Despliegue Producción e Integrac.[████░░░░░░░░
## 🏗️ Arquitectura del Proyecto (Monorepo)
El repositorio está dividido en dos aplicaciones principales que interactúan mediante una API REST y un patrón Backend-For-Frontend (BFF).
El repositorio implementa un patrón desacoplado en formato monorepo compuesto por la **Core API (Backend)**, la capa de mediación y vistas **BFF (Frontend)**, herramientas unificadas de despliegue, auditoría automatizada y flujos de CI/CD:
```text
/
├── backend/ # API REST Backend (Python / Flask)
│ ├── app/ # Lógica de negocio, base de datos y endpoints
│ ├── tests/ # Pruebas unitarias e integración
│ └── requirements.txt # Dependencias de Python
├── backend/ # Capa Core API (Python 3.10+ / Flask / SQLAlchemy)
│ ├── app/ # Lógica de negocio y arquitectura desacoplada
│ │ ├── models/ # Modelos ORM (User, Role, Classroom, Reservation, etc.)
│ │ ├── routes/api/ # Endpoints REST JSON v1 (/auth, /classrooms, /admin, etc.)
│ │ ├── schemas/ # DTOs y validación de contratos (Pydantic v2)
│ │ ├── services/ # Servicios de dominio (JWT, Email SMTP, Moodle, Queue)
│ │ └── security/ # Pipeline de filtros y validación stateless de JWT
│ ├── tests/ # Suite activa de pruebas unitarias y de integración (pytest)
│ ├── init_db.py # Inicializador idempotente de esquema, roles RBAC y semillas
│ ├── backup_db.sh # Generador automatizado de backups para PostgreSQL
│ ├── classrooms_db.sql # Snapshot integral de base de datos para despliegue
│ ├── wsgi.py # Entrada WSGI para ejecución con Gunicorn
│ └── requirements.txt # Dependencias Python auditadas (0 vulnerabilidades / CVEs)
│
├── frontend/ # Backend-For-Frontend (Node.js / Express)
│ ├── src/ # Controladores, middleware, servicios (Axios)
│ ├── views/ # Plantillas Nunjucks (.html)
│ ├── public/ # Archivos estáticos (CSS, JS cliente)
│ └── package.json # Dependencias de Node.js
├── frontend/ # Backend-For-Frontend BFF (Node.js 20 LTS / Express)
│ ├── src/ # Capa servidora de mediación web
│ │ ├── app.js # Servidor Express, seguridad Helmet, rate-limiting
│ │ ├── controllers/ # Controladores de orquestación y mediación
│ │ ├── middlewares/ # Sesión por Cookie HttpOnly, JWT injection y RBAC
│ │ ├── routes/ # Enrutamiento web (auth, schedule, classrooms, admin)
│ │ └── services/ # Cliente Axios centralizado hacia Flask API
│ ├── views/ # Plantillas y componentes dinámicos en Nunjucks (.html)
│ │ ├── admin/ # Paneles de gestión institucional y configuración
│ │ ├── classrooms/ # Catálogo de aulas y visualización de sedes
│ │ ├── schedule/ # Cronograma de comisiones, reservas y calendario
│ │ ├── my_subjects/ # Libreta de calificaciones, hitos evaluativos y cursada
│ │ └── partials/ # Componentes reutilizables, modales y navegación
│ ├── public/ # Assets estáticos (CSS responsive 720p/1080p, JS cliente)
│ └── package.json # Dependencias y manifiesto de Node.js
│
├── docs/ # Historial de cambios y documentación técnica
└── unicaba_prerequitos/ # Requisitos académicos y de negocio
├── install.sh # Instalador nativo unificado para Linux / Proxmox LXC
├── security_audit.bat # Suite automatizada de auditoría (SAST, SCA, DAST)
├── .gitea/workflows/ # Pipelines de integración continua (CI/CD en Gitea)
├── docs/ # Especificaciones técnicas, auditorías y changelogs
├── ROADMAP_MVP.md # Plan de evolución, estadios y fases del proyecto
├── SECURITY_AUDIT_REPORT.md # Informe formal de auditoría y hardening
└── README.md # Documentación general y guía operativa
```
### 🐍 Backend (Python + Flask)
### 🐍 Backend Core API (Python + Flask)
- Funciona exclusivamente como una **REST API** que expone endpoints bajo `/api/v1/` retornando **JSON**.
- Encargado de la persistencia de datos (SQLAlchemy / PostgreSQL), lógica de negocio dura, JWT auth service, seguridad, y algoritmos de optimización (Módulo Predictivo).
- Encargado de la persistencia de datos (SQLAlchemy / PostgreSQL o SQLite), lógica de negocio, servicio de tokens JWT (Access & Refresh), matriz RBAC, y algoritmos de optimización heurística (Módulo Predictivo).
- **Prohibido** retornar HTML o utilizar Jinja2/`render_template` en este entorno.
### 🟢 Frontend BFF (Node.js + Express)
- Aplicación de servicio que renderiza las vistas para el cliente mediante **Nunjucks**.
- Aplicación Backend-For-Frontend que renderiza las vistas para el cliente mediante **Nunjucks**.
- Gestiona la sesión segura del usuario almacenando el token JWT recibido de Flask en una **Cookie HttpOnly**.
- Actúa como proxy de conexión con el Backend de Python empleando **Axios** (inyectando el Bearer token interceptado).
- Utiliza **Chart.js** y JS vanilla en el lado del cliente para visualizaciones interactivas.
- Blindado con **Helmet** (cabeceras de seguridad HTTP) y **express-rate-limit** para mitigar ataques de fuerza bruta.
- Interfaz adaptativa y responsive diseñada para pantallas estándar argentinas (720p, 1366x768 y 1080p) con gráficos dinámicos (**Chart.js**).
---