From 7a3468cd9fea84d53f8cadb139416282c52e15b8 Mon Sep 17 00:00:00 2001 From: Carlos Tello Date: Wed, 23 Sep 2026 14:15:11 -0300 Subject: [PATCH] docs: actualizar diagrama y descripcion de arquitectura monorepo en README.md --- README.md | 57 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 08ad136..1f698f6 100644 --- a/README.md +++ b/README.md @@ -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**). ---