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
-
Daily data extraction: pull course data from AMS and store in MongoDB using Mongoose models.
-
Hourly sync: action runs every hour to sync calendars with the database.
-
Calendar management: GCal API manages calendar events, each class has 1 invite with all verified users in that class as participants.
-
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!