How nassimnasr/coursee-registration works
Course Registration System supports student and registrar workflows through server-rendered web pages and a JWT-protected REST API. Students authenticate, browse courses and sections, register or join waitlists, and view or drop registrations; registration applies prerequisite, schedule, and capacity rules with section locking. Registrars manage courses and sections. README documents event-driven email notifications; their wiring is shown at the documented level because listener and integration source was not sampled. Authentication and management internals are included; database configuration is identified from the tree.
Main entry points: repository JPA repositories · web Web controllers · api REST controllers · RegistrationService.java Registration rules
Components 19
User entry
- Web controllers
src/main/java/com/nasr/controller/web - Thymeleaf pages
src/main/resources/templates - REST controllers
src/main/java/com/nasr/controller/api
Identity and security
- Session security
src/main/java/com/nasr/security/SecurityConfig.java - JWT filter
src/main/java/com/nasr/security/JwtAuthenticationFilter.java - JWT utilities
src/main/java/com/nasr/security/JwtUtil.java - User details
src/main/java/com/nasr/security/CustomUserDetailsService.java - User service
src/main/java/com/nasr/service/UserService.java
Registration domain
- Registration rules
src/main/java/com/nasr/service/RegistrationService.java - JPA repositories
src/main/java/com/nasr/repository - Domain entities
src/main/java/com/nasr/model - H2 database
src/main/resources/application.yml
Catalog management
- Course management
src/main/java/com/nasr/service/CourseManagementService.java
Notifications
- Registration events
src/main/java/com/nasr/event - Event listener
src/main/java/com/nasr/integration/RegistrationEventListener.java - Email gateway
src/main/java/com/nasr/integration/EmailNotificationGateway.java - Email adapter
src/main/java/com/nasr/integration/LoggingEmailAdapter.java
Other components
- Student / registrar
- Email service
Connections 21
- Student / registrar → Web controllers: uses web UI
- Student / registrar → REST controllers: calls REST
- Web controllers → Session security: secured by
- Session security → Thymeleaf pages: renders
- REST controllers → JWT filter: secured by
- JWT filter → JWT utilities: validates tokens
- JWT filter → User details: loads identity
- User details → JPA repositories: reads users
- REST controllers → User service: authenticates or registers
- User service → JPA repositories: reads and writes users
- REST controllers → Registration rules: registers, drops, queries
- Web controllers → Registration rules: registers and queries
- Registration rules → JPA repositories: reads and writes
- Course management → JPA repositories: manages catalog
- Web controllers → Course management: manages courses and sections
- JPA repositories → H2 database: persists entities
- Registration rules → Registration events: publishes outcomes
- Registration events → Event listener: dispatches events
- Event listener → Email gateway: sends notifications
- Email gateway → Email adapter: routes messages
- Email adapter → Email service: delivers email