The Ultimate Gamified Codeforces Companion
Collaborate. Compete. Conquer.
Transform your competitive programming journey with real-time battles, deep analytics, and a gamified learning environment.
CanonForces is a multiplayer Codeforces companion platform designed to make competitive programming collaborative, analytical, and fun. We bridge the gap between solitary practice and community engagement by integrating powerful tools like a built-in IDE, real-time 1v1 duels, and comprehensive performance analytics.
New: Now featuring full Codeforces Synchronization! Your submissions, stats, and solved problems are automatically synced in real-time.
- 1v1 Real-time Battles: Challenge friends or get matched instantly via Redis queues. Solve problems faster to win.
- Battle Royale Lobbies: Join 20-30 player lobbies for intense "King of the Hill" quiz sessions.
- Coin System: Earn coins for every problem solved, daily streak maintained, and contest solution uploaded.
- Advanced CP IDE: Powered by Monaco Editor and Judge0. Supports C++, Python, Java, JS, and more with real stdin/stdout.
- Codeforces Sync: Automatically tracks your Codeforces submissions and updates your local stats.
- Contest Archive: View past contests and upload your own solutions to earn rewards.
- Performance Dashboard: Compare your stats (Rating, Rank, Max Streak) across Codeforces and LeetCode.
- Problem of the Day (POTD): Admin-curated daily challenges with streak tracking and "Daily Solver" leaderboards.
- Global Leaderboards: Rank up against the community based on Coins earned or Problems solved.
| Domain | Technologies |
|---|---|
| Frontend | Next.js (React), Tailwind CSS, ShadCN UI, Framer Motion |
| Backend | Firebase (Auth/Firestore), Node.js |
| Real-time | Socket.IO, Redis (Queues & Leaderboards) |
| AI & API | Gemini AI (Quiz Generation), Judge0 (Code Execution), Codeforces API |
Follow these steps to set up the project locally.
- Node.js (v18+)
- Firebase Account
- Redis (Optional, for local dev of 1v1 features)
- Clone the repository
git clone [https://github.com/OpenLake/canonforces.git](https://github.com/OpenLake/canonforces.git)
cd canonforces
Create a .env.local (check .env.example for latest updates) file in the root directory and add your keys:
NEXT_PUBLIC_FIREBASE_API_KEY=your_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_domain
NEXT_PUBLIC_JUDGE0_API_KEY=your_rapidapi_key
REDIS_URL=your_redis_url
GEMINI_API_KEY=your_ai_keynpm run devWe welcome contributions from the community! Whether you're fixing bugs, improving the UI, or adding new features, your help is appreciated.
- Check the Issues tab (look for tags like
good first issueorFoss Overflow) - Fork the project and create your feature branch:
git checkout -b feature/AmazingFeature- Commit your changes:
git commit -m "Add some AmazingFeature"Push it to Github
git push origin feature/AmazingFeature
And raise a PR adding @aviralsaxena16 as reviewer
Aviral Saxena
GitHub: @aviralsaxena16



