This project is a high-security case management system designed for school environments. It focuses on managing assignment lifecycles, implementing contextual Role-Based Access Control (RBAC), handling secure file uploads to AWS S3, and maintaining detailed activity logs.
- Assignment Lifecycle: Creation, assignment, communication, submission, and evaluation.
- Strict Scoped RBAC: Contextual permissions (Mentor vs Teacher vs Student) with enrollment-based access control.
- School Class Management: Full CRUD for school classes and viewing associated courses/participants.
- Activity Logging: Automated tracking of all major system events with descriptive details and robust null-safety.
- File Management: S3-compatible storage integration with pre-signed URL security.
- User Profiles: Comprehensive views of user info, including enrolled classes and courses.
- Authentication: Session-based auth + GitHub OAuth2.
- Backend: Java 25, Spring Boot 4.0.5
- Database: PostgreSQL (Dockerized)
- Frontend: React 19.2.4, Vite 8.0.1, Tailwind CSS, Shadcn UI
- Testing: JUnit 5, Mockito (131 tests passing)
- Core entity models, security, S3 integration, and school portal management logic are in place.
- Contextual RBAC for controllers, refined DTO mapping, and a modern React dashboard with role-based access.
- Implemented comprehensive Edit/Delete features for Courses, Assignments, and School Classes.
- Optimized performance by replacing full-table scans with role-scoped paginated queries and bounded memory usage for profiles.
- Hardened security with object-level authorization, request validation, and sensitive data masking (UserSummary).
- Fixed critical Hibernate 6 soft-delete incompatibilities and improved null-safety in services.
- Debug S3 integration issues (e.g., file uploads failing with CORS error / 403).
- Implement soft deadlines (allow late with "Late" flag).
- Auto-status updates via @Scheduled tasks.
- Automatic course archiving/read-only mode after endDate.
- Docker
- Java 25+
- Maven
- Node.js 20+
- Start Database:
docker compose up -d - Configure: Update
application-dev.propertieswith GitHub OAuth2 credentials. - Run:
./mvnw spring-boot:run
cd frontendnpm installnpm run dev
Maintained with Gemini CLI