Better AMS

December 1st, 20232 min read

projectuniversity

TLDR; Tired of using AMS, I made a website to find your course information - lecture/DS timings and your course syllabus. Even for the next semester!

Why?

Using AMS can be quite a hassle. It's clunky and not user-friendly, and finding specific course information like lecture times, discussion sections, and syllabus details is too time-consuming. This led me to think, "Why not create a solution myself?" That's when the idea struck - a tool I can use to find this information. Soon, what was a tool for me became a website everyone can use.

How it was made

To build this project, I chose Svelte for its simplicity and reactivity - perfect for building a fast and responsive user interface. Being sane, I integrated TypeScript to ensure code reliability and maintainability.

But, the real challenge was gathering the course data. With Puppeteer, I could programmatically navigate AMS, extract the necessary course details, and update the site's database. This Svelte, TypeScript, and Puppeteer blend was the perfect recipe for a seamless, efficient, and user-friendly platform.

How can I use it?

Head over to better-ams.berlm.me and search for your course name or professor!

Update September 1, 2024: adding calendar sync

TLDR; I've expanded Better AMS to automatically sync your class schedule from AMS to your calendar, complete with location-based notifications before each class.

Why?

While manually syncing AMS courses to a calendar is a simple 10-minute process, I found myself procrastinating on it this semester. This project solves that problem and serves as an experiment in building a small-scale application using groupware concepts.

Tech Stack: Express/MongoDB/GCal API/GitHub Actions/Fly.io/Nodemailer

How it works

  1. Daily data extraction: pull course data from AMS and store in MongoDB using Mongoose models.

  2. Hourly sync: action runs every hour to sync calendars with the database.

  3. Calendar management: GCal API manages calendar events, each class has 1 invite with all verified users in that class as participants.

  4. Deployment: Fly.io with docker for free hosting :)

How can I use it?

Simply add your email to the list at better-ams.berlm.me to start syncing your AMS schedule automatically!


Written by Dhruman Gupta

Edit on GitHub