RUMBLE! is a ethereum-based one-on-one competitive programming platform where players compete each other for ELO points or Ethereum stakes. We see it as a whole new domain in the competitive programming scene where it shifts the focus from dedicated contests to one-on-one face-offs making it even more quick and thrilling. It also creates a base for Web3 organizations to contribute in popularizing competitive programming. Rumble solves the problem of making competitive programming more engaging, rewarding, and interactive by transforming it into a real-time, game-like experience.
We majorly built RUMBLE! in Typescript, React, Tailwind, Flask and SQLite so we had the following plans made up: (Many points were not implemented due time constraints)
- A Login Page and Google OAuth.
- Connection to Metamask wallet.
- Proper routing to the Dashboard.
- Dashboard with ETH-Stake and Rated modes.
- Problem Selection based on range of levels from Codeforces.
- parsing random problem statement from id from codeforces api and bypassing 403 Requests for selecting markup.
- Showing leetcode-like workspace to input test.
- Setting up proper sockets for communication.
- Using Rapid API for compiling code in our IDE also using Codeium Auto-complete.
- Submitting into our dummy account in codeforces bypassing Cloudflare using selenium-base as it blocks several drivers and any User Agents as stated in codeforces.com/robots.txt just like vjudge.
- Now using codeforces API to check status and verdict of our submission and updating in our frontend and database.
- Doing appropriate calculations of ELO as in chesscom or ETH Stake distribution proving rating or ETH in respective accounts/wallets in MetaMask.
- Updating the game archive in the database.
- Creating a well-detailed profile as shown in our Figma designs paperwork.
- Proper stats in profile and invite system and setting up Notifications