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) ## 🏗️ 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 ```text
/ /
├── backend/ # API REST Backend (Python / Flask) ├── backend/ # Capa Core API (Python 3.10+ / Flask / SQLAlchemy)
│ ├── app/ # Lógica de negocio, base de datos y endpoints │ ├── app/ # Lógica de negocio y arquitectura desacoplada
│ ├── tests/ # Pruebas unitarias e integración │ │ ├── models/ # Modelos ORM (User, Role, Classroom, Reservation, etc.)
│ └── requirements.txt # Dependencias de Python │ │ ├── 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) ├── frontend/ # Backend-For-Frontend BFF (Node.js 20 LTS / Express)
│ ├── src/ # Controladores, middleware, servicios (Axios) │ ├── src/ # Capa servidora de mediación web
│ ├── views/ # Plantillas Nunjucks (.html) │ │ ├── app.js # Servidor Express, seguridad Helmet, rate-limiting
│ ├── public/ # Archivos estáticos (CSS, JS cliente) │ │ ├── controllers/ # Controladores de orquestación y mediación
│ └── package.json # Dependencias de Node.js │ │ ├── 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 ├── install.sh # Instalador nativo unificado para Linux / Proxmox LXC
└── unicaba_prerequitos/ # Requisitos académicos y de negocio ├── 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**. - 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. - **Prohibido** retornar HTML o utilizar Jinja2/`render_template` en este entorno.
### 🟢 Frontend BFF (Node.js + Express) ### 🟢 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**. - 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). - 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**).
--- ---