Timetable Calendar.
How I built a tool that turns Irish college timetables into live calendar feeds.
Last updated
On this page
College Timetable Calendar turns your college timetable into a live calendar feed that updates itself when the college changes something.
The problem
Every semester starts the same way. Screenshot the timetable, never open it again, miss a lab.
What it does
Three simple steps:
- Select your college.
- Search your programme.
- Click add to Apple Calendar, Google Calendar, or whatever you use.
Every event comes through with the lecture name, the room, and the rest of the details, so you can check where you're meant to be from your lock screen instead of a portal.
How it works
It only uses public timetable data, so no student login is needed, and there's no database: nothing is stored.
Getting the timetable data
- One shared API client: DCU, TU Dublin, UCC, and NCI all run the same timetabling system (Scientia), so one client handles all four through a per-college config.
- Scraping where there's no API: DkIT and SETU Waterford don't offer one, so the app parses their timetable web pages with cheerio.
It launched with DCU, TU Dublin, and UCC. When I launched it, I asked people which college to add next.
Turning it into a calendar feed
- I generate the iCal (ICS) feeds by hand, with no library, in the Europe/Dublin timezone. Room codes get turned into full names, like DCU's building letters into building names.
- They're calendar subscriptions, not one-off imports, so schedule changes reach students automatically without anyone checking manually.
- Timetable data is cached for 6 hours, plus CDN caching on top.
Stack
- Next.js (App Router): the pages and the API in one project.
- React with plain CSS for the UI.
- TypeScript
- cheerio for scraping.
- PostHog and Vercel Analytics for analytics.
- Formspree for forms.
- Vercel for hosting.
- Vitest, Testing Library, and Playwright for unit, integration, and end-to-end tests, plus live tests that hit the real college endpoints.
More on my usual stack in My Stack and Workflow.
Launch
It reached 300+ subscribed users within 48 hours of launch, and it's now at 1,000+ users.