How mohamedabdelfattah022/codeforge works
CodeForge is an online judge for coding practice and ICPC-style contests. Users manage problems and test cases, submit code, and receive evaluation results; contest submissions also support standings. The map follows documented API, asynchronous judging, storage, and caching capabilities, while the excerpts show only selected handlers and service calls. Consequently, some subsystem links are documented at a high level, and unverified runtime connections are omitted or marked dashed.
Main entry points: Repositories Data repositories · Submissions Submission handling · Testcases Test case management · SubmissionConsumerService.cs Submission consumer
Components 23
API
- Problem endpoints
src/CodeForge.Api/Controllers/ProblemsController.cs - Submission endpoints
src/CodeForge.Api/Controllers/SubmissionsController.cs - Contest endpoints
src/CodeForge.Api/Controllers/ContestsController.cs - Tag endpoints
src/CodeForge.Api/Controllers/TagsController.cs - Test case endpoints
src/CodeForge.Api/Controllers/TestcasesController.cs - User endpoints
src/CodeForge.Api/Controllers/UsersController.cs
Application workflows
- Problem management
src/CodeForge.Application/Problems - Tag management
src/CodeForge.Application/Tags - Test case management
src/CodeForge.Application/Testcases - User and roles
src/CodeForge.Application/Users
Judging and contests
- Submission handling
src/CodeForge.Application/Submissions - Submission consumer
src/CodeForge.Application/Submissions/Services/SubmissionConsumerService.cs - Code execution
src/CodeForge.Application/Submissions/scripts/run.py - Contest management
src/CodeForge.Application/Contests - Standing updates
src/CodeForge.Infrastructure/Services/StandingUpdateService.cs
Persistence and storage
- Data repositories
src/CodeForge.Infrastructure/Repositories - SQL data store
src/CodeForge.Infrastructure/Contexts/CodeForgeDbContext.cs - File storage service
src/CodeForge.Infrastructure/Services/SupabaseService.cs
External services
- Message producer and consumer
src/CodeForge.Infrastructure/Messaging/MessageProducer.cs - RabbitMQ
- Supabase storage
- Redis cache
src/CodeForge.Infrastructure/Services/RedisCacheService.cs
Other components
- User
Connections 29
- User → Problem endpoints: manages problems
- User → Submission endpoints: submits code
- User → Contest endpoints: competes in
- User → Tag endpoints: organizes problems
- User → Test case endpoints: manages test cases
- User → User endpoints: uses accounts
- Problem endpoints → Problem management: dispatches commands
- Submission endpoints → Submission handling: dispatches commands
src/CodeForge.Api/Controllers/SubmissionsController.cs - Contest endpoints → Contest management: dispatches requests
src/CodeForge.Api/Controllers/ContestsController.cs - Tag endpoints → Tag management: dispatches requests
src/CodeForge.Api/Controllers/TagsController.cs - Test case endpoints → Test case management: dispatches requests
src/CodeForge.Api/Controllers/TestcasesController.cs - User endpoints → User and roles: dispatches requests
- Submission handling → Message producer and consumer: queues submissions
- Message producer and consumer → RabbitMQ: sends messages
- RabbitMQ → Submission consumer: delivers submissions
- Submission consumer → Code execution: runs code
- Submission consumer → Submission handling: records verdicts
- Submission handling → Data repositories: persists submissions
- Problem management → Data repositories: persists problems
- Tag management → Data repositories: persists tags
- Test case management → Data repositories: loads test cases
src/CodeForge.Application/Testcases/Queries/GetTestcases/GetTestcasesQueryHandler.cs - Test case management → File storage service: reads test files
src/CodeForge.Application/Testcases/Queries/GetTestcases/GetTestcasesQueryHandler.cs - File storage service → Supabase storage: reads and writes files
- Data repositories → SQL data store: reads and writes
- Contest management → Data repositories: loads contest data
src/CodeForge.Application/Contests/Queries/GetAllContests/GetContestsQueryHandler.cs - Contest management → Standing updates: updates standings
src/CodeForge.Infrastructure/Services/StandingUpdateService.cs - Standing updates → Redis cache: caches standings
src/CodeForge.Infrastructure/Services/StandingUpdateService.cs - Standing updates → Data repositories: loads contest results
src/CodeForge.Infrastructure/Services/StandingUpdateService.cs - User and roles → SQL data store: stores user accounts