Skip to content

AzeTurk810/oi-checklist

 
 

Repository files navigation

(Real creator of this site avighnac)

oi-checklist

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.

Features

  • 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.

Screenshots

RLanding Page and Dashboard

Landing page (dark mode)

Dark mode landing page

Dashboard view (logged in, dark mode)

Dashboard after logging in

Virtual Contests

Ongoing virtual contest screen

Ongoing virtual contest: live timer, progress, and end controls

Virtual contest history

View history of all past virtual contests

Virtual contest post-analysis

Detailed breakdown of performance: rank, medal, percentile, and more

Virtual contest graphs

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)

Virtual contest graphs

Codeforces checklist(with problem adding and removing)

Virtual contest graphs

Your profile(at dropdown)

Virtual contest graphs

Your plans(with adding and removing)

Virtual contest graphs

Upcoming atcoder/cf/oi contests

Supported Olympiads

The checklist contains a wide range of Olympiads in Informatics:

Core Olympiads

  • 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)

Miscellaneous

  • Google Kick Start

Additional

  • IATI
  • INFO(1)CUP
  • AzeSelections
  • Canadian Computing Olympiad
  • Spain Olympiad in Informatics

Local Development Instructions

Requires Python 3 and node.js installed locally

Clone the repository

Ensure you have git installed.

In any appropriate directory, run:

git clone https://github.com/AzeTurk810/oi-checklist
cd oi-checklist

Ensure python3 and python dependencies are installed

Install 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 npm and node dependencies

Install node.js from here.

Run npm install.

Create a .env file

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.

Initialise the database

To initialse the database, run npx prisma migrate deploy && npx prisma generate. This will create a .db file at the path we specified earlier.

Populate problems and contests

To populate problem and contest data into the database, run the following two commands sequentially:

npm run syncProblems
npm run syncContests

And finally, run the server

npm run dev starts the server: OI Checklist will be available at localhost:5501.

Contributing

Bug reports, feature requests, and PRs are welcome. Feel free to file an issue or submit a fix.

Adding problems and contests

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.

Internal API Overview

Below is a brief overview of the key endpoints exposed by the backend.

prefix: /auth

  • /register
  • /login
  • /logout
  • /check
  • /github
  • /discord
  • /google

prefix: /data

  • /problems
  • /virtual
    • /detail
    • /history
    • /scores
    • /stats
    • /summary

prefix: /user

  • /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.

License

This project is released under the MIT License.

(and thanks to avighnac for this awsome site)

About

Just for debuging

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 45.3%
  • CSS 20.7%
  • TypeScript 15.9%
  • HTML 10.7%
  • Python 7.4%