Updated: 17 January 2026 at 11:47:06 PM β’ Automatic
A comprehensive overview of problem-solving achievements across multiple platforms
| π― Platform | π€ Profile | β Solved | π Progress | π Updated On | π Mode |
|---|---|---|---|---|---|
| MishkatIT | 2602 | 17 January 2026 | |||
| MishkatIT | 412 | 17 January 2026 | |||
| MishkatIT | 347 | 17 January 2026 | |||
| MishkatIT | 157 | 17 January 2026 | |||
| MishkatIT | 126 | 17 January 2026 | |||
| MishkatIT | 66 | 15 January 2026 | |||
| MishkatIT | 37 | 17 January 2026 | |||
| MishkatIT | 31 | 17 January 2026 | |||
| MishkatIT | 18 | 16 January 2026 | |||
| MishkatIT | 7 | 17 January 2026 | |||
| MishkatIT | 7 | 17 January 2026 | |||
| MishkatIT | 2 | 15 January 2026 | |||
| ποΈ TOTAL | 3812 | 100% | 17 January 2026 | ||
| π Last Solved | π Platform(s) |
|---|---|
| 17 January 2026 | CodeChef, Codeforces, Toph, and UVa |
| π₯ Top Platform | π― Main Focus | π Platforms Active |
|---|---|---|
| Codeforces | Competitive Programming | 12 |
| 2602 Problems | Algorithm Mastery | Multi-Platform |
Tired of manually updating your competitive programming stats?
Want a beautiful, automatically updated showcase of your achievements?
Ready to track your progress across 12+ platforms effortlessly?
π You can have the same automated tracking system! π
What you'll get: Your own GitHub README that automatically updates every day with your latest problem-solving statistics from Codeforces, LeetCode, AtCoder, and 9 other platforms!
- Python 3.8 or higher
- A GitHub account
- pip (Python package manager)
-
Fork this repository π΄
- Visit MishkatIT/ProblemSolvingStats
- Click the Fork button in the top-right corner
- Now you have your own copy!
-
Clone your fork π¦
git clone https://github.com/YOUR_USERNAME/ProblemSolvingStats.git cd ProblemSolvingStats -
Install dependencies π₯
pip install -r requirements.txt
-
Configure your usernames βοΈ
Edit
src/config.pyand replace with your platform usernames/IDs:# Actual usernames/IDs used in URLs (can be IDs like '165802' for CSES) USER_CONFIG = { 'Codeforces': 'YourUsername', 'LeetCode': 'YourUsername', 'AtCoder': 'YourUsername', 'CSES': 'YourUserID', # Can be a numeric ID # ... update all your platforms } # Display names shown in the README profile table (user-friendly names) PROFILE_DISPLAY_NAMES = { 'Codeforces': 'YourDisplayName', 'LeetCode': 'YourDisplayName', 'CSES': 'YourDisplayName', # Shows nice name even if ID is used in URL # ... keeps your profile looking clean and consistent }
π‘ Pro Tip: Use
PROFILE_DISPLAY_NAMESto show a consistent name across all platforms in the README, even when some platforms require numeric IDs or lowercase usernames. -
Run it once to test π§ͺ
python3 update_stats.py
-
Enable GitHub Actions π€
- Go to your repository's Actions tab
- Click "I understand my workflows, go ahead and enable them"
- Your stats will now update automatically every day! π
Automatic Update (Recommended):
python3 update_stats.py⨠This script will:
- π Fetch your latest statistics from all 12 platforms
- πΎ Save results to
stats.jsonandlast_known_counts.json - π Automatically generate and update your README.md
- π Create beautiful progress badges and tables
Manual Update (When needed):
python3 manual_update.pyπ οΈ This script will:
- π Let you manually enter statistics for any platform
- π‘ Perfect when automatic fetching fails
- π― Useful for platforms without APIs
Update README Only:
python3 update_readme.pyThis script updates the README.md using existing data from stats.json.
- Scheduled to run daily at 11:40-11:47 PM BDT (randomized timing)
- Automatically fetches statistics from platforms with working APIs
- Failed platforms fall back to last known values with date stamps
- Updates are committed and pushed automatically to the repository
The repository features an intelligent scheduling system that adapts to your solving patterns:
Current Status: π’ Active - Updates running daily (you're actively solving problems!)
How it works:
- Active Mode (Daily): Runs every day when you're consistently solving problems
- Inactive Mode (Monthly): Automatically switches to monthly updates after 90 consecutive days without solving any problems
- Automatic Recovery: Detects when you solve a new problem and immediately switches back to daily updates
Why this matters:
- Saves GitHub Actions minutes during study breaks, vacations, or busy periods
- Ensures timely updates when you're actively practicing
- No manual intervention needed - the system manages itself
- Prevents unnecessary daily runs when your stats aren't changing
The schedule check runs before each update, making the decision based on your most recent solve date across all platforms.
If you need to update statistics manually:
- Run
python3 manual_update.pyto input current statistics - The script will prompt you to visit each platform and enter the current solve count
- Statistics are automatically saved and the README is updated
Note: Each platform shows the last update date and mode (Automatic/Manual) in the statistics table.
We welcome contributions! Whether you want to report bugs, suggest features, improve documentation, or add new platform support, your help is appreciated.
Please see CONTRIBUTING.md for detailed guidelines on how to contribute to this project.
ProblemSolvingStats/
βββ src/ # Shared modules (NEW)
β βββ __init__.py # Package initialization
β βββ config.py # Centralized configuration
β βββ data_manager.py # JSON data operations
β βββ utils.py # Shared utility functions
βββ .github/
β βββ workflows/
β βββ update-stats.yml # GitHub Actions workflow
βββ update_stats.py # Main statistics fetcher
βββ update_readme.py # README generator
βββ manual_update.py # Manual input script
βββ requirements.txt # Python dependencies
βββ last_known_counts.json # Cached statistics
βββ .gitignore # Git ignore rules
βββ README.md # This file
src/config.py: All configuration constants (usernames, URLs, colors, etc.)src/utils.py: Shared utility functions (date formatting, calculations, etc.)src/data_manager.py: Handles all JSON file operationsupdate_stats.py: Fetches stats from 12 platforms via APIs and web scrapingupdate_readme.py: Generates and updates the README with statisticsmanual_update.py: Interactive script for manual statistics inputlast_known_counts.json: Stores last successful fetch for each platform
The codebase has been significantly refactored to improve maintainability:
- Created
src/module - Centralized shared code - Eliminated duplication - Removed 327+ lines of repeated code (~20% reduction)
- Single source of truth - All configs now in
src/config.py - Reusable utilities - Common functions in
src/utils.py - Centralized data management - All JSON operations in
src/data_manager.py
- update_stats.py: 78 lines removed (10.7% reduction)
- update_readme.py: 169 lines removed (22% reduction)
- manual_update.py: 80 lines removed (42.5% reduction)
- Easier to maintain and update
- Consistent behavior across all scripts
- Reduced chance of bugs from duplicate code
- Clearer separation of concerns
- Better code organization