Skip to content

Latest commit

 

History

History
62 lines (37 loc) · 2.46 KB

README.md

File metadata and controls

62 lines (37 loc) · 2.46 KB

Classes.fyi

Get updates when your classes's seats open up.

TODO

  • Clean up functions/update.ts
  • Add a self-cleanup function that runs once a month to check the current quarter & unregister all user from previous quarters
  • Improve class schedule rendering
  • Better frontend class searching
  • Add loading messages to lookup views; make loading only show up if taking longer than 1s
  • Add desktop browser notification support?

Frontend

Frontend website is made using Vue 3 and Vite. It uses the OpenCourseAPI directly to get class data. It's hosted using Firebase Hosting as a SPA.

Server

Backend server uses Firebase Functions in Node 12 and TypeScript. Emails are rendered using Handlebars.

Functions

  • cleanupUnusedClasses: Runs automatically when a user unregisters from a class; checks if that class is registered by any other user, and deletes it if not.
  • updateClassesData: Runs periodically through a pubsub; gets updated class data from OpenCourse, checks if any class status has changed significantly, and sends an email to each person registered to those classes.

Email

Sending

Emails are rendered using Handlebars with two different templates (one for html and one for plain text). They are sent through Mailgun.

Receiving

Email receiving & followup is done with a Zoho mail free account.

Credit

Made by Miguel Tenant de La Tour with the help of Madhav Varshney.

Class data provided by OpenCourseAPI.

Contribute

If you have any ideas or things you want to improve on, you can submit a PR. Thanks!

Basic Setup

Prerequisites: You must have Nodejs (preferably v12), and the firebase-tools package globally installed.

# Note: You might need to npm install in order for some steps to work

# To test the website only (no user accounts/registration)
cd hosting
npm run dev

# If you want the full setup, run the above and in a separate terminal run this at the root of the project
firebase emulators:start

# In both cases, the website will be available at http://localhost:8000