Sistema de Gestion de Avaluo de Desempeno β Backend API
Avaluo es una plataforma de gestion academica orientada al avaluo de desempeno universitario. Facilita la evaluacion de competencias, Student Outcomes (SO) y Performance Indicators (PI) mediante rΓΊbricas digitales, generacion automatica de informes en PDF y dashboards de seguimiento para coordinadores de carrera.
Este repositorio contiene el Backend API del sistema, desarrollado como parte de una tesis de grado en colaboracion con INTEC bajo los estandares de acreditacion ABET.
Repositorio original: Tejanin/AvaluoBackend
Frontend (privado): siriuzz/AvaluoUI
Prototipo de diseΓ±o: Figma
| π Auth JWT + Roles | Autenticacion y autorizacion con tokens JWT y permisos por roles. |
| π RΓΊbricas, SO y PI | Gestion completa de rΓΊbricas, Student Outcomes y Performance Indicators. |
| π Dashboards | Resumenes de desempeno por carrera y periodo acadΓ©mico. |
| π Informes PDF | Generacion automatica de informes con IronPDF y vistas Razor. |
| π Integracion INTEC | Sincronizacion de datos con sistemas externos de la institucion. |
| β‘ Cache Redis | Cache distribuido para optimizacion de lecturas frecuentes. |
| β° Jobs Quartz | Tareas programadas para procesos recurrentes y mantenimiento. |
| ποΈ Arquitectura DDD | Capas separadas (Presentation, Application, Domain, Infrastructure). |
| Capa | Tecnologia |
|---|---|
| Framework | .NET 8 Web API |
| ORM / Micro-ORM | Entity Framework Core 9 + Dapper |
| Base de datos | Microsoft SQL Server |
| Cache | Redis (StackExchange.Redis) |
| Autenticacion | JWT Bearer + Cookies seguras |
| Documentacion API | Swagger + Swashbuckle |
| Generacion PDF | IronPDF |
| Mapeo | Mapster |
| Jobs | Quartz.NET |
| Contenedores | Docker Compose (Redis) |
flowchart TD
Client["Cliente / Frontend"] -->|HTTP + JWT| Presentation["π‘ Presentation Layer<br/>Controllers + ViewModels"]
Presentation -->|DTOs + Requests| Application["βοΈ Application Layer<br/>Services + Middlewares"]
Application -->|Entities + Commands| Domain["π§ Domain Layer<br/>Entidades + Reglas de Negocio"]
Application -->|Abstracciones| Infrastructure["πΎ Infrastructure Layer<br/>EF Core / Dapper / Redis / Auth / Jobs"]
Domain -.->|Implementa| Infrastructure
style Presentation fill:#e1f5fe
style Application fill:#fff3e0
style Domain fill:#e8f5e9
style Infrastructure fill:#fce4ec
- Presentation: Controladores REST, ViewModels y filtros de validacion.
- Application: Servicios de aplicacion, DTOs, middlewares de excepcion y autenticacion.
- Domain: Entidades, value objects y reglas de negocio puras.
- Infrastructure: Persistencia (EF Core + Dapper), cache Redis, autenticacion JWT, integraciones INTEC y jobs Quartz.
Para mas detalles, consulta la documentacion completa o el archivo CONTRIBUTING.md.
El backend expone una API REST documentada con Swagger. A continuacion, una demostracion del sistema en accion: Ver demo en YouTube
Documentacion interactiva de la API con Swagger UI
Interfaz del cliente conectado al backend
Generacion automatica de informes en PDF
- Swagger UI:
https://localhost:8000(al ejecutar localmente) - Documentacion tecnica: GitHub Pages
- .NET 8 SDK
- Docker Desktop (para Redis)
- SQL Server (local o remoto)
git clone https://github.com/RayfelO/AvaluoBackend.git
cd AvaluoBackenddocker-compose up -dCopia el archivo de ejemplo y completa los valores necesarios:
cp AvaluoAPI/appsettings.example.json AvaluoAPI/appsettings.jsonAjusta las ConnectionStrings y las claves de Jwt, Email e IronPdf.
cd AvaluoAPI
dotnet runLa API estara disponible en:
- API:
https://localhost:8000 - Swagger UI:
https://localhost:8000(raiz)
AvaluoBackend/
βββ AvaluoAPI/
β βββ Presentation/
β β βββ Controllers/
β βββ Application/
β β βββ Services/
β β βββ DTOs/
β βββ Domain/
β β βββ Entities/
β β βββ Services/
β βββ Infrastructure/
β βββ Persistence/
β βββ Integrations/
β βββ Data/
βββ docker-compose.yml
βββ docs/
βββ assets/
La documentacion tecnica del proyecto esta disponible via GitHub Pages:
Tambien puedes consultar:
CONTRIBUTING.mdβ Estandares de codigo, flujo Git y estructura de carpetas.docs/β Fuente de la documentacion en GitHub Pages.
Este proyecto esta licenciado bajo la Licencia MIT.
Desarrollado como tesis de grado. Fork del proyecto original con mejoras y documentacion adicional.