How fatec-ams-pi-2026/backend-spring-gini works
GINI is a Spring backend for academic timetable planning at Fatec Itu. Coordinators and administrators maintain academic and facility data, define teaching periods and schedules, allocate classes, validate availability and conflicts, and review or copy timetable versions. The main allocation path is exposed through REST controllers and coordinated by domain services/use cases before persistence. README capabilities are represented, but several subsystem links use package-level paths because their implementations were not sampled.
Main entry points: repositories JPA repositories · AlocacaoService.java Allocation service · AlocacaoController.java Allocation API · AutenticacaoController.java Authentication API
Components 19
API and access
- Allocation API
src/main/java/com/fatec/gini/web/controller/AlocacaoController.java - Timetable API
src/main/java/com/fatec/gini/web/controller/QuadroHorarioController.java - Authentication API
src/main/java/com/fatec/gini/web/controller/AutenticacaoController.java - Security filters
src/main/java/com/fatec/gini/web/config - Token services
src/main/java/com/fatec/gini/domain/services/TokenService.java - Error mapping
src/main/java/com/fatec/gini/web/exception/ResourceExceptionHandler.java
Academic setup
- Catalog APIs
src/main/java/com/fatec/gini/web/controller - Catalog services
src/main/java/com/fatec/gini/domain/services - Teacher availability
src/main/java/com/fatec/gini/domain/services/DisponibilidadeProfessorService.java
Timetable workflow
- Allocation service
src/main/java/com/fatec/gini/domain/services/AlocacaoService.java - Create allocation
src/main/java/com/fatec/gini/domain/services/usecase/write/CriarAlocacaoUseCase.java - Update allocation
src/main/java/com/fatec/gini/domain/services/usecase/write/AtualizarAlocacaoUseCase.java - Schedule validation
src/main/java/com/fatec/gini/domain/services/usecase/read - Timetable versions
src/main/java/com/fatec/gini/domain/services/QuadroHorarioService.java - Change history
src/main/java/com/fatec/gini/domain/services/HistoricoVersaoAlocacaoService.java
Domain and persistence
- Academic entities
src/main/java/com/fatec/gini/domain/entities - JPA repositories
src/main/java/com/fatec/gini/infrastructure/repositories - Relational database
Other components
- API client
Connections 23
- API client → Allocation API: sends requests
- API client → Timetable API: sends requests
- API client → Authentication API: sends credentials
- Allocation API → Allocation service: calls
- Timetable API → Timetable versions: calls
- Authentication API → Security filters: authenticates
- Authentication API → Token services: issues tokens
- Security filters → Token services: checks tokens
- Catalog APIs → Catalog services: calls
- Catalog services → JPA repositories: reads and writes
- Teacher availability → JPA repositories: reads and writes
- Allocation service → Create allocation: creates allocations
- Allocation service → Update allocation: updates allocations
- Allocation service → Schedule validation: validates schedules
- Allocation service → JPA repositories: queries allocations
- Timetable versions → JPA repositories: loads versions
- Timetable versions → Schedule validation: validates copies
- Change history → JPA repositories: stores history
- Create allocation → JPA repositories: persists allocations
- Update allocation → JPA repositories: persists changes
- JPA repositories → Academic entities: maps entities
- JPA repositories → Relational database: reads and writes
- Allocation API → Error mapping: maps errors