Skip to content

YOLUgargaring/Codeforces-AtCoder-Helper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OJ Data Analyzer

Online Judge data analysis and problem recommendation tool for competitive programmers. Currently supports Codeforces, with AtCoder integration planned.

Core Features

  • Rating Analysis — rating trends, peaks, volatility, and recent performance over time
  • Tag Analysis — tag frequency, solve rate, and average difficulty per algorithmic topic
  • Strengths & Weaknesses — proficiency scoring per tag, identifying mastered vs. underdeveloped areas
  • Visualization — interactive charts (rating history line chart, tag distribution bar chart, strength/weakness radar chart)
  • Problem Recommendations — tag-based recommendation engine with rating-range matching and diversity optimization
  • AI Coach (planned) — AI-powered personalized analysis and training advice

Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite, Recharts
Backend FastAPI (Python), httpx
Data Analysis Pandas
Data Source Codeforces API (public)

Getting Started

Prerequisites

  • Python 3.10+
  • Node.js 18+

Backend

cd backend
pip install -r requirements.txt
python -m uvicorn main:app --reload --port 8000

The API server starts at http://localhost:8000. Interactive docs available at http://localhost:8000/docs.

Frontend

cd frontend
npm install
npm run dev

The dev server starts at http://localhost:5173 with API requests proxied to the backend.

API Endpoints

Method Path Description
GET / Health check
GET /api/user/{handle} User info + rating history
GET /api/user/{handle}/submissions Submission history (paginated)
GET /api/user/{handle}/analysis Combined analysis (rating + tags + strengths)
GET /api/user/{handle}/recommend Problem recommendations
GET /api/contests Contest list
GET /api/problemset Problemset search

Development Status

Phase Feature Status
Phase 1 Codeforces API integration Done
Phase 2 Data analysis engine Done
Phase 3 Visualization (React + Recharts) Done
Phase 4 Problem recommendation system Done
Phase 5 AtCoder API integration Blocked — upstream API (Kenkoooo) returns 403; exploring Playwright-based alternative
Phase 6 AtCoder analysis & recommendations Pending Phase 5
Phase 7 AI Coach Planned
Phase 8 Production deployment Planned

AtCoder's official site has no public API. The Kenkoooo API (a widely-used community data source) has blocked external access. We are evaluating Playwright-based scraping of the AtCoder official site or AtCoder Problems frontend as a fallback.

Project Structure

backend/
├── main.py                   # FastAPI entry point
├── api/                      # Route handlers
├── analysis/                 # Data analysis modules (rating, tags, strengths)
├── recommender/              # Recommendation engine
├── services/                 # External API clients
└── models/                   # Data models (placeholder)

frontend/
├── src/
│   ├── components/           # Reusable UI components
│   ├── charts/               # Recharts-based chart components
│   ├── pages/                # Page-level components
│   ├── App.tsx               # Root component
│   └── types.ts              # TypeScript type definitions
└── vite.config.ts            # Vite build config + API proxy

Contributing

  1. File an issue to discuss proposed changes before starting work
  2. Follow the existing module structure — API handlers in backend/api/, analysis logic in backend/analysis/
  3. Do not modify existing API signatures without prior discussion
  4. Use TypeScript strict mode for frontend changes
  5. Match the existing dark theme and responsive layout conventions for UI work

License

MIT

About

A web application for analyzing the strengths and weaknesses of Codeforces and AtCoder users and recommending problems, aimed at helping programming competition enthusiasts train.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors