Enterprise-Grade Programming Contest Platform
The most reliable, feature-complete judging system for university programming contests. Built for high-availability environments where failure is not an option.
| Feature | UOLJudge | Online Platforms |
|---|---|---|
| Offline Operation | ✅ 100% offline-capable | ❌ Requires internet |
| Network Latency | < 100ms (local) | 200-500ms+ |
| Data Privacy | ✅ Your data stays local | ❌ Cloud storage |
| Customization | ✅ Full source access | ❌ Locked platform |
| Cost | ✅ Free, self-hosted | 💰 Subscription fees |
| Multi-Category | ✅ CORE, WEB, ANDROID | ❌ Code only |
| Feature | UOLJudge | Traditional Systems |
|---|---|---|
| Real-Time Updates | ✅ WebSocket-powered | ❌ Polling/refresh |
| Modern UI | ✅ Premium shadcn/ui | ❌ Legacy interfaces |
| Setup Time | 5 minutes (Docker) | Hours of configuration |
| Mobile Support | ✅ Responsive design | ❌ Desktop only |
| Live Leaderboard | ✅ Instant updates | ❌ Manual refresh |
- Role-based access control — Admin, Jury, Participant isolation
- Device limit enforcement — Max 2 devices per team
- Server-side time authority — Clock manipulation impossible
- Path traversal protection — Secure file downloads
- WebSocket-powered — < 100ms update propagation
- Live leaderboard — Animated score changes
- Instant notifications — Announcements, bans, grades
- Presence indicators — See who's grading what
- 3-tier ranking — Problems Solved → Score → Time Penalty
- O(1) leaderboard reads — Atomic accumulator pattern
- Leaderboard freeze — Hide final hour rankings
- Penalty system — 20-minute wrong answer penalties
- CORE — Traditional programming (C++, Python, Java)
- WEB — Frontend/fullstack projects (ZIP upload)
- ANDROID — Mobile apps (APK/ZIP upload)
- One-click export — Interactive HTML ceremony
- Keyboard-controlled — Professional presentation
- Fireworks animation — Dramatic champion reveal
- Offline playback — Works without server
For a detailed look at the system architecture and data flow, please refer to FLOW.md.
graph TD
Browser[Web Browser] -->|HTTPS| LB[Load Balancer]
Mobile[Mobile Device] -->|HTTPS| LB
LB -->|HTTP| NextJS[Next.js App]
LB -->|WS| WS[WebSocket Server]
NextJS -->|Query| DB[(PostgreSQL)]
- Docker & Docker Compose
- Git
# Clone the repository
git clone https://github.com/MuhammadAliyan10/UOLJudge.git
cd uol-judge
# Start the application using the CLI helper
./bin/uol-judge start
# Initialize database
./bin/uol-judge initDefault Login: admin / uol0512
For detailed deployment instructions, see DEPLOYMENT.md.
We welcome contributions! Please see CONTRIBUTING.md for details on how to get started.
For security policy and reporting vulnerabilities, please refer to SECURITY.md.
This project is licensed under the MIT License - see the LICENSE file for details.
UOLJudge V5.0 — When the network fails, the contest never does.