How benjamarit/multirole works
MultiRole is a competition-management and judging application: project owners configure competitions, teams, groups, criteria, and judge assignments; judges submit weighted evaluations; owners monitor results and rankings. The React frontend routes role-specific workflows and loads server-backed workspace data through the API client. Spring services enforce access and evaluation rules, with MySQL as the persistent store. The README also documents deadline history, notifications, and email reminders. Several controllers and subsystems are unsampled, so their internal call paths are not asserted.
Main entry points: client.js API client · App.jsx Role-based routes · model Competition records · CompetitionController.java Competition API
Components 23
Web application
- Role-based routes
src/App.jsx - Session context
src/context/AuthContext.jsx - API client
src/api/client.js - Workspace loader
src/api/workspace.js - Project operations
src/data/projects/ProjectStore.js - Owner workflows
src/pages - Judge workflows
src/pages - Administration
src/pages
Backend API
- Authentication API
backend/src/main/java/org/cesystem/multirole/controller/AuthController.java - Competition API
backend/src/main/java/org/cesystem/multirole/controller/CompetitionController.java - Teams and groups API
backend/src/main/java/org/cesystem/multirole/controller/TeamGroupController.java - Access control
backend/src/main/java/org/cesystem/multirole/service/AccessService.java - Competition records
backend/src/main/java/org/cesystem/multirole/model
Judging domain
- Evaluation rules
backend/src/main/java/org/cesystem/multirole/service/EvaluationService.java - Batch evaluation
backend/src/main/java/org/cesystem/multirole/service/BatchEvaluationService.java - Leaderboard
backend/src/main/java/org/cesystem/multirole/service/LeaderboardService.java
Identity and messaging
- Authentication service
backend/src/main/java/org/cesystem/multirole/service/AuthService.java - Email verification
backend/src/main/java/org/cesystem/multirole/service/EmailVerificationService.java - Evaluation reminders
backend/src/main/java/org/cesystem/multirole/service/EvaluationReminderService.java - Email delivery
backend/src/main/java/org/cesystem/multirole/service/EmailDeliveryService.java
Other components
- User
- MySQL
- Brevo email
Connections 20
- User → Role-based routes: uses
src/App.jsx - Role-based routes → Owner workflows: routes to
src/App.jsx - Role-based routes → Judge workflows: routes to
src/App.jsx - Role-based routes → Administration: routes to
src/App.jsx - Session context → API client: requests
src/context/AuthContext.jsx - Session context → Workspace loader: loads session data
src/context/AuthContext.jsx - Workspace loader → API client: fetches workspace
src/api/workspace.js - Project operations → API client: updates projects
src/data/projects/ProjectStore.js - API client → Authentication API: calls API
- API client → Competition API: calls API
- Competition API → Access control: checks access
backend/src/main/java/org/cesystem/multirole/controller/CompetitionController.java - Competition API → Competition records: reads and updates
backend/src/main/java/org/cesystem/multirole/controller/CompetitionController.java - Teams and groups API → Access control: checks access
backend/src/main/java/org/cesystem/multirole/controller/TeamGroupController.java - Authentication service → Email verification: requests verification
backend/src/main/java/org/cesystem/multirole/service/AuthService.java - Authentication service → Competition records: creates user
backend/src/main/java/org/cesystem/multirole/service/AuthService.java - Evaluation rules → Competition records: records scores
backend/src/main/java/org/cesystem/multirole/service/EvaluationService.java - Evaluation rules → Leaderboard: feeds results
- Evaluation reminders → Email delivery: queues reminders
backend/src/main/java/org/cesystem/multirole/service/EvaluationReminderService.java - Email delivery → Brevo email: sends mail
- Competition records → MySQL: persists records
README.md