Electia is a digital system for managing university elective courses, built with a .NET 8 REST API and a React 18 + Vite SPA. Designed for the University of Havana’s context, it supports administrators, professors, and students across the full lifecycle—from course proposals to enrollment, academic monitoring, and official documentation. See docs/ for the full report; this README stays focused on setup.
- Backend: ASP.NET Core, Entity Framework Core, Identity + JWT auth, FluentValidation
- Frontend: React 18, TypeScript, Vite, TailwindCSS, AG Grid
- Data & tooling: SQL Server, Docker Compose, npm, pnpm-compatible scripts
- Maintain faculties, majors, courses, and elective instances with role-based access control
- Handle student applications, approval rules, rosters, and grade publishing in one place
- Export and inspect enrollment metrics with ready-made dashboards and Excel downloads
docker compose up --build- Web client: http://localhost:3000
- Swagger UI: http://localhost:5000/swagger
- Backend
Adjust the
cd ElectiaCore dotnet restore dotnet ef database update --project ElectiaCore.Infrastructure dotnet run --project ElectiaCore.WebDefaultConnectionstring inElectiaCore.Web/appsettings.jsonor via environment variables to point at your SQL Server instance. - Frontend
Override the API URL by exporting
cd ElectiaApp npm install npm run devVITE_API_BASE_URLif the backend is not onhttp://localhost:5097/api.
Electia/
├── ElectiaCore/ # Domain, application, infrastructure, API, and tests
├── ElectiaApp/ # React SPA
├── docker-compose.yml # Full stack definition
├── deploy-electia.* # Helper scripts for remote deployments
└── docs/ # Project report and presentation
# .NET tests
cd ElectiaCore
dotnet test ElectiaCore.TestsFor architecture decisions, database diagrams, and role walkthroughs, read the project materials under docs/.