Inspiration
The best way people improve their programming ability is by competing. Good examples include the interview process, demanding jobs, and competitive programming. However, each one of these areas have a flaw: waiting. Patience isn't an issue, but being able to actively improve your programming ability seem uncommon than it should be. Competitive contest often occurs only once a week, while professional contest may occur monthly or even annually. It's unlikely someone would get a job interview every day, and the common area of growth is when you first get into the field; hence, you're not as likely to get a job.
Philosophy
Our philosophy is simple: great code isn't written in isolation; it's proven through competition.
Programming is more than solving problems. It's about thinking faster, adapting smarter, and continuously improving. Our platform turns that mindset into a competitive experience where two developers face off in a 1v1 coding battle, putting their skills, creativity, and problem-solving abilities to the test.
The blue character represents the player: intelligence, precision, creativity, and clean code. He embodies the mindset of a programmer who stays calm under pressure, anticipates challenges, and outsmarts the competition.
The red demon represents the opponent: chaos, malicious code, unexpected challenges, and the constant threat of being outperformed. He is always lurking, looking for an opportunity to exploit a weakness, introduce a bug, or get ahead.
Their rivalry represents the essence of the platform:
Blue is intelligence over chaos. Write better code, think smarter, and stay one step ahead.
Red is the challenge. Every opponent brings new strategies, unexpected problems, and opportunities to improve.
The battle is about skill. Victory comes from your ability to solve problems, adapt, and outperform another developer.
We want to make programming competitive, engaging, and fun. Instead of simply writing code, you're putting your abilities on the line against another person.
Don't just write code. Compete with it. Outsmart your opponent. Win the duel.
What it does
Like any typical online game, players can queue up and compete with one another on the spot. Additionally, if you're interested in cyber-security related fields, the cyber range is the perfect excuse. In the Cyber-range, players can make defensive code that they believe is durable enough to not get hacked. If this thought is true, they get rewarded. However, if someone managed to destroy their existing code, the attacker steals all their resources. Ultimately, CodeWatch allow users to obtain proficiency in their programming; being able to do it submontanely without having to worry having to delay their worth practice by another week/month.
How we built it
Languages: Python - React + TS -
For the backend, we used FastAPI - JWT - and Node.js. With fastAPI, we created serval models and routes connecting to node that reads submission data, while handling rate limits and compiling logic. Additionally, we used JWT for user cache and data migrating in the database. We used python's SQLmodel library, which we combined with SQLAlchemy to ideally handle multiple session data; for instance, match sessions, user sessions, and judge sessions.
For tools, we used Claude AI and Claude Code to aid with certain areas of the project; for instance, Claude provided a very well-done frontend that we then migrated through different versions. Additionally, Claude helped with debugging, guiding us through tasks like creating a server, and build features at a quicker rate than without it.
From the submission logic, we used Judge0 and APIs to provide problem sets and keys. With JudgeO, we were able to implement reliable live action feeds on user ends.
1v1 In this mode, players can combat one another to submit working and efficient code. Behind the scenes, JudgeO helps deals with the judging on submission, while a custom system is placed that rates speed - scope - and how effective of your code.
2v2 - 3v3 These modes are 1v1 but with extra teammates. Once you built your team, you can pick the respective option.
Challenges we ran into
We ran into many issues when it came to the user flow and judging logic. For instance, my laptop, a windows using wsl, was actually restricting access to the Judge0. Because my laptop used WSL2, Judge0 didn't have the logic to operate on the system. Another issue was the queuing logic. We faced multiple issues in JavaScript; which the player finder would end abruptly due to a function calling itself twice then ended due to a enforced limit.
Accomplishments that we're proud of
getting version 1 to work was great. To test the player vs player aspect, we used digital ocean to get a working sever. This change also deals with the WSL2 issue I've mentioned. Not only that, but the team also working on their own independent cause shown great success; making the debugging process and code migration easier than expected.
What we learned
We've learned a lot. We learnt more about Git workflows, Docker, how to publish apps real time. Additionally, this was our first attempt working on a gamified platform; making it just more existing and enjoying.
What's next for Codewatch
Surprisingly, Codewatch is an unfounded idea. After doing research, a player vs player que time platform surprisingly does not exist. We play a lot of video games, e.g. Overwatch, which inspired the entire structure of this platform, and finding out that the people who move quicker than the average profession doesn't have this type of platform was out of our expectations. Based on internal results, CodeWatch may become an open-sourced platform; in which programmers in all fields who see the vision can contribute towards.
