Competitive programming analytics dashboard with Codeforces sync, local-first storage, goal tracking, and performance intelligence.
Live Demo Β· Source Code Β· Features Β· Getting Started Β· Deployment
CodePulse / CP Atlas helps competitive programmers turn raw Codeforces activity into clear, actionable insight.
It tracks performance, visualizes trends, spots weak topics, and keeps goals and contest history organized in one fast, static, local-first dashboard.
Built with React 19, TypeScript, Vite, and Tailwind CSS, it is designed to be fast, elegant, and ready for GitHub Pages deployment.
Competitive programming progress is easy to lose track of.
Contest ratings change. Problem lists grow. Weak topics hide in plain sight. Consistency fades unless it is measured.
CodePulse solves that by transforming your CP history into a productively structured view of:
- performance
- strengths
- weaknesses
- consistency
- goals
- contests
- comparisons
It is built for people who want more than raw stats. It is built for people who want direction.
Most CP tools show numbers.
CodePulse shows movement.
It helps answer questions like:
- Am I improving over time?
- Which topics are costing me points?
- How strong is my contest consistency?
- How do I compare to another Codeforces user?
- What should I focus on next?
- Am I on track for my target rating?
That makes it useful not just as a tracker, but as a decision tool for practice and progress.
- Connect a Codeforces handle and sync contest / submission data
- View key performance stats in a clean, focused dashboard
- Track essential CP metrics at a glance
- Interactive charts and trend tracking
- Rating movement analysis
- Performance summaries over time
- Visual progress signals for long-term improvement
- Topic-based strength and weakness analysis
- Identify categories that need more practice
- Convert raw submission history into useful practice guidance
- Search and filter problem history
- Sort by status and other useful attributes
- Revisit old submissions, mistakes, and solved problems quickly
- Contest timeline with rating changes
- Participation history
- Better post-contest review and reflection
- Compare your profile against another Codeforces handle
- Benchmark rating, solved count, and growth patterns
- Great for competition tracking and motivation
- Track goals for:
- rating
- solved count
- streaks
- contest participation
- Keep your CP routine measurable and disciplined
- Data stays in the browser
- Export and import JSON backups
- No mandatory backend
- Easy to move between sessions and devices with backup support
- Relative asset paths configured for static hosting
.nojekyllsupport- Automated deployment workflow included
| Area | What You Get |
|---|---|
| Dashboard | Core stats in one place |
| Analytics | Charts, trends, and pattern spotting |
| Topic Analysis | Weakness detection and practice guidance |
| Problem History | Searchable and filterable records |
| Contest Review | Contest timeline and rating changes |
| Comparison | Side-by-side Codeforces benchmarking |
| Goals | Rating, solved, streak, and contest targets |
| Storage | Local-first browser storage with JSON backup |
| Deployment | GitHub Pages-ready static build |
| Layer | Technology |
|---|---|
| Frontend | React 19 |
| Language | TypeScript |
| Build Tool | Vite |
| Styling | Tailwind CSS |
| Charts | Recharts |
| Icons | Lucide React |
| Hosting | GitHub Pages |
| Storage | Local-first browser storage |
- Node.js 20 or newer
- npm
npm cinpm run devThe app will start on port 3000.
npm run buildnpm run lint| Script | Purpose |
|---|---|
npm run dev |
Start the local development server |
npm run build |
Build production files |
npm run preview |
Preview the production build |
npm run clean |
Remove the dist/ folder |
npm run lint |
Run TypeScript type-checking |
This repository is configured for GitHub Pages.
vite.config.tsuses absolute asset paths withbase: '/codepulse-cp-analytics/'for GitHub Pagespublic/.nojekylldisables Jekyll processingpublic/404.htmlprovides SPA routing fallback.github/workflows/deploy.ymlbuilds and publishes thedist/folder automatically on push tomain
- Push to
main, or - Run the GitHub Actions workflow manually via the "Workflow dispatch" option
CodePulse uses a local-first approach.
- handle information
- synced contest data
- submission history
- analytics state
- goal progress
- comparison data
- Export your data as JSON
- Import backups anytime
- Save before switching devices or clearing site data
Codeforces API requests are used for syncing account data.
This powers:
- contest history
- submission history
- rating changes
- performance analytics
- comparison views
- Fast β lightweight and responsive
- Clear β focused UI without clutter
- Useful β built around real competitive programming workflows
- Local-first β no unnecessary backend complexity
- Static-friendly β deployable on GitHub Pages
- Extensible β structured for future features
- Smarter weakness detection
- Practice recommendations based on performance patterns
- Calendar-based consistency tracking
- Richer comparison analytics
- More advanced rating forecasting
- Better export and summary views
- Optional cloud sync in a future version
The project uses Vitest for unit testing.
# Run tests in watch mode
npm test
# Run tests once (CI)
npm run test:runESLint and Prettier are configured:
# Check types
npm run lint
# Format code (if Prettier CLI installed)
npx prettier --write .If CodePulse helps you track, understand, and improve your CP journey, consider starring the repository.
This project is licensed under the MIT License.