Skip to content

nilanshucodes/algoradar-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,449 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

android-icon-48x48 AlgoRadar Extension

Chrome extension to track upcoming competitive programming contests from multiple platforms.

Feature

  • Multi-Platform: Codeforces, AtCoder, LeetCode, CodeChef, Kaggle, and more
  • Smart Filters: Filter by platform and time (Today, Week, Month)
  • Fast & Reliable: Contest data is served from scheduled, cached JSON updates with automatic background refresh
  • Beautiful: Clean dark theme interface
  • Secure: Backend API aggregates and caches CLIST data without exposing credentials
  • Free Forever: No ads, no tracking, open source

Installation

From Chrome Web Store

AlgoRadar

Manual Installation (For Development)

  1. Clone this repository
  2. Open Chrome → chrome://extensions/
  3. Enable "Developer mode"
  4. Click "Load unpacked"
  5. Select the extension folder

Project Structure

algoradar/
├── api/                      # Backend (Vercel serverless)
│   └── contests.js           # Serves pre-generated contest data (no runtime CLIST calls)
│
├── data/                     # Generated contest data
│   └── contests.json         # Cached JSON updated via local scheduled script
│
├── extension/                # Chrome extension
│   ├── manifest.json         # Extension manifest (MV3)
│   ├── background.js         # Background service worker (fetch + cache logic)
│   ├── popup.html            # Extension popup UI
│   ├── popup.css             # Popup styles
│   └── popup.js              # Popup interaction logic
│
├── .github/
│   └── workflows/
│       └── update-contests.yml  # Cron job to fetch contests from CLIST
│
└── README.md

Development Backend Development bash# Install dependencies npm install -g vercel

Run locally

vercel dev

Deploy to production

vercel --prod

Extension Development

  1. Make changes in extension/ folder
  2. Go to chrome://extensions/
  3. Click reload icon on AlgoRadar
  4. Test changes

Backend API (Data Service)

The backend is deployed on Vercel and serves pre-generated static contest data.

  • Contest data is fetched via a scheduled GitHub Actions cron job
  • Data is stored as static JSON and served to clients
  • No runtime calls to CLIST API
  • Eliminates rate-limit risks and cold-start issues
  • Backend only reads cached data at request time

Data Update Architecture

Previous Approach(Deprecated)

  • GitHub Actions cron job fetched from CLIST API
  • Worked for 1700+ commits
  • Issue: Cloudflare bot protection started blocking GitHub Actions IPs (403 errors)

Current Approach

  • Local macOS script runs every 3 hours + on system wake
  • Uses residential IP (trusted by Cloudflare)
  • Commits and pushes to GitHub automatically
  • Vercel detects push and serves updated data
  • Zero Cloudflare blocks

Tech Stack

  • Frontend: Vanilla JavaScript, HTML, CSS
  • Backend: Vercel Serverless Functions
  • Data Pipeline: Local scheduling script->GitHub->Vercel
  • API: CLIST API
  • Deployment: Vercel (backend), Chrome Web Store (extension)

Documentation

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Known Limitations

  • Contest data updates when maintainer's machine is online (typically every 3-6 hours)
  • If machine is offline for extended periods, data may be slightly stale (contests are announced days/weeks ahead, so this rarely affects users)
  • UI remains intentionally minimal to keep the extension lightweight

Future Improvements

  • Migrate to a 24/7 VPS for always-on updates (Oracle Cloud Free Tier or similar)
  • Optional persistent storage (only if future scale requires it)

Latest Release (v1.2.0)

  • Global Timezone: automatically detects your computer's system timezone.
  • The "Time Remaining" now accurately matches the actual start time.
  • Contests now remain visible and accessible right up until their official start time.
  • No UI changes

License

GPL-3.0 License - see LICENSE

Attribution

  • Contest data powered by CLIST
  • AlgoRadar is an independent community project

Contact


Built with ❤️ for the competitive programming community