(Real creator of this site avighnac)
A modern, full-featured web app for tracking progress across major Olympiads in Informatics: from IOI and USACO to APIO and EGOI.
Try it live: https://checklist.spoi.org.in or explore the interface using a demo account: https://checklist.spoi.org.in/demo.
- Mark problems as solved, partially solved, or assign exact scores out of 100.
- The checklist currently contains ~2,700 problems from 26 different sources.
- Start official past contests with a live timer and full performance tracking.
- For contests on oj.uz and qoj.ac, submissions are auto-synced and scored per subtask.
- Post-contest screens show rank, percentile, medal, and more. Based on actual historical results.
- oj.uz, qoj.ac, and codechef.com sync: Automatically update your checklist progress using your past submissions from three platforms.
- Arrange olympiads in any order you like, and hide those you don't want cluttering your view.
- Attach personal notes to problems for strategy, hints, or reminders, enhanced with a rudimentary markdown editor.
Dark mode landing page
Dashboard after logging in
Ongoing virtual contest: live timer, progress, and end controls
View history of all past virtual contests
Detailed breakdown of performance: rank, medal, percentile, and more
Graphs that show detailed submission data and an overall contest timeline
Note: The scores shown in these screenshots have been arbitrarily chosen and may not reflect a score that's actually achievable under real contest scoring rules.
After this added by AzeTurk810 with help of Gemini and Local:Deepseek-r1:14b(with tools)
Codeforces checklist(with problem adding and removing)
Your profile(at dropdown)
Your plans(with adding and removing)
Upcoming atcoder/cf/oi contests
The checklist contains a wide range of Olympiads in Informatics:
-
Singapore National Olympiad in Informatics (NOI)
-
Asia-Pacific Informatics Olympiad (APIO)
-
Central European Olympiad in Informatics (CEOI)
-
International Olympiad in Informatics (IOI)
-
Indian National Olympiad in Informatics (INOI)
-
Indian Zonal Computing Olympiad (ZCO)
-
USA Computing Olympiad (USACO):
- Bronze
- Silver
- Gold
- Platinum
-
Croatian Olympiad in Informatics (COI)
-
Indian IOI Training Camp (IOITC) (problems are private and accessible only to IOITC participants)
-
Japanese Olympiad in Informatics:
- Spring Camp
- Final Round
- Open Contest
-
European Girls' Olympiad in Informatics (EGOI)
-
European Junior Olympiad in Informatics (EJOI)
-
International Zhautykov Olympiad (IZHO)
-
Russian Olympiad in Informatics (ROI)
-
Polish Olympiad in Informatics (POI)
-
Baltic Olympiad in Informatics (BOI)
-
Balkan Olympiad in Informatics (BKOI)
-
Romanian Master of Informatics (RMI)
- Google Kick Start
- IATI
- INFO(1)CUP
- AzeSelections
- Canadian Computing Olympiad
- Spain Olympiad in Informatics
Requires Python 3 and node.js installed locally
Ensure you have git installed.
In any appropriate directory, run:
git clone https://github.com/AzeTurk810/oi-checklist
cd oi-checklistInstall python3 and pip from python.org. Then run pip install bs4 requests cloudscraper. You will need these packages for scraping (oj.uz, qoj.ac, codechef.com sync).
Install node.js from here.
Run npm install.
Create a .env file with the following values:
| Variable | Description |
|---|---|
DATABASE_PATH |
The exact path to a .db file that we'll make in the next step. You can set this to any path you want; for example; I use file:/Users/avighna/Desktop/oi-checklist/database.db |
ROOT_URL |
Set this to http://localhost:5501/ |
GITHUB_CLIENT_ID |
Your GitHub client ID |
GITHUB_CLIENT_SECRET |
Your GitHub client secret |
DISCORD_CLIENT_ID |
Your Discord client ID |
DISCORD_CLIENT_SECRET |
Your Discord client secret |
GOOGLE_CLIENT_ID |
Your Google client ID |
GOOGLE_CLIENT_SECRET |
Your Google client secret |
QOJ_USER |
Username for the qoj.ac account used for scraping |
QOJ_PASS |
Password for the same qoj.ac account |
Note that every variable other than the first two isn't strictly required for the app to work. The client IDs and secrets are only needed for OAuth (which you may not need if you're running this locally). The qoj.ac username and password variables are needed for qoj.ac virtual contest scraping (which, again, you may or may not need).
However, they still need to be present in the .env file. If you’re not using those features locally, you can just fill them with placeholder values.
To initialse the database, run npx prisma migrate deploy && npx prisma generate. This will create a .db file at the path we specified earlier.
To populate problem and contest data into the database, run the following two commands sequentially:
npm run syncProblems
npm run syncContestsnpm run dev starts the server: OI Checklist will be available at localhost:5501.
Bug reports, feature requests, and PRs are welcome. Feel free to file an issue or submit a fix.
The data folder contains all problem and contest data. Feel free to add problems and/or contests here. For the exact format, please refer to existing problems/contests.
Below is a brief overview of the key endpoints exposed by the backend.
/register/login/logout/check/github/discord/google
/problems/virtual/detail/history/scores/stats/summary
/problems/settings/link/ojuz/qoj
/virtual/confirm/context/end/start/submit
For full details, check the src/backend/routes/ directory, each route is self-contained and sufficiently commented.
This project is released under the MIT License.
(and thanks to avighnac for this awsome site)









