COU
A configurable, deployable open-source online judge grown into a product and a startup.
3→10-person team · 2022 SW Talent Festival award
From a project to a startup
COU stands for "Coding Online-judge platform Univ.", an online-judge website and full-service development project started in 2022.
The motivation was simple. Existing online judges like Baekjoon (BOJ) are centralized and closed, so you can’t adapt them to your own purpose or deploy them yourself. So COU started from a clear goal: an online judge anyone could modify for their needs and deploy and operate with ease.
It began as a small team I gathered and led. As it progressed the scope grew and the team expanded, and once the platform was reasonably complete I registered a business and turned it into a startup. I grew it from 3 to 10 people while owning product direction and team operations as PM. It was a journey from project to service to startup, and a paper that captured the process.
Presenting as school representative at the Gangwon SW-university workshop
In December 2022 I presented COU as my school’s representative at the Gangwon-region SW-oriented University cooperation workshop, held alongside the Korea Software Congress (KSC2022). I introduced COU’s goal of making an open-source online judge easy for anyone to deploy and operate.
Selected as an outstanding work at the 2022 SW Talent Festival
I then took part in the 2022 SW Talent Festival (hosted by the Ministry of Science and ICT and IITP) as my school’s representative. On a national stage where SW-oriented universities from across the country gathered, COU was selected as an outstanding work; I ran a booth, demoed the project, and presented it, framing its significance through the lens of open-source software adoption.
The solving experience at the core
The core screen is the problem-solving interface: the problem statement and example I/O on the left, and an editor on the right for writing and submitting code right in the browser. The editor supports multiple languages with syntax highlighting and theme switching, and on submit an isolated judge server runs the code, decides pass/fail, and lets you follow the judging status.
So in-progress code never gets lost, a dedicated draft-code (auto-save) module guards against bad saves with a checksum, and private submission is supported for coding-test settings.
Problems, practice, and personalization
Problems are organized by category, tag, and difficulty, with a per-category completion rate showing learning progress. Random problem pick and search/difficulty filters make it a practice experience tailored to the learner rather than a flat problem list. On top of that it rounds out into a full service with contests (coding tests), a submission feed, a community (questions and posts), and notifications.
Stack and deployment
The backend is Django — account, problem, submission, judge, contest, draft-code, email auth, announcements, and community modules — and the frontend is Vue, wiring in a code editor (CodeMirror), math (KaTeX), charts (ECharts), and i18n. Data runs on PostgreSQL and Redis.
The judge server is isolated with minimal container privileges (cap_drop) and a read-only, tmpfs filesystem so unknown users’ code runs safely. The whole service is packaged with Docker Compose to come up in a single command — matching the original goal of making it easy for anyone to deploy and operate in their own environment.
Role
As PM and founder I owned everything from product direction to team operations and external talks, growing an outstanding-work project into a real service and then a startup.