A simple project that fetches upcoming coding contests from the Codolio API and provides:
- A web calendar view (
index.html) powered by FullCalendar. - Platform-specific
.icsfeeds users can subscribe to in Google Calendar. - Automated feed refresh every 6 hours via GitHub Actions + GitHub Pages deployment.
- The workflow in
.github/workflows/update.ymlruns every 6 hours (0 */6 * * *UTC) and also on pushes tomain. - It runs
python codolio_to_calendar.pyto regeneratepublic/*.ics. - It deploys
public/to GitHub Pages. - Users subscribe once in Google Calendar using the hosted
.icsURL, and Google refreshes events periodically.
index.html- Frontend calendar UI and subscription links.codolio_to_calendar.py- Script that fetches contests and generates.icsfiles inpublic/.public/*.ics- Generated iCalendar feed files..github/workflows/update.yml- Scheduled automation + deploy workflow.
- Install dependencies:
python3 -m pip install requests icalendar pytz- Run the generator:
python3 codolio_to_calendar.pyThis creates:
public/all_contests.icspublic/leetcode_contests.icspublic/atcoder_contests.icspublic/codeforces_contests.icspublic/codechef_contests.icspublic/geeksforgeeks_contests.ics
Use the hosted feed URL format:
https://himanth-reddy.github.io/codilo_calander/leetcode_contests.ics
In Google Calendar:
- Open Other calendars -> + -> From URL
- Paste the feed URL
- Click Add calendar
Google updates subscribed calendars automatically, but refresh timing is controlled by Google and is not instant.
python3 -m http.server 8000Then open:
http://localhost:8000/index.html
https://node.codolio.com/api/contest-calendar/v1/all/get-upcoming-contests