docs: actualizar diagrama y descripcion de arquitectura monorepo en README.md
This commit is contained in:
@@ -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**).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user