Skip to content

πŸ“… A tool for students to generate .ics files from their unformatted schedule.

License

Notifications You must be signed in to change notification settings

AndrewDTR/uw-cal-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

40 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“… 🦑 UW Calendar Generator

An ics/ical generator to automatically convert UW-Madison schedules into calendar events (for use in Google Calendar or Outlook). Not associated with the University.

Infrastructure

I, like many other students at UW-Madison, put my class schedule into apps like Google Calendar for convenience. However, this can be pretty tedious, especially when dealing with reoccuring events and school holidays. With this tool, all you have to do is paste in your course schedule, and it'll give you a formatted .ics file that you can import into the calendar app of your choice.

The frontend is just a vanilla HTML page using Bootstrap. I have my webserver (Caddy) with a file_server directive pointing into the frontend folder. It parses the schedule, shows it to the user, and sends it to the backend when the user downloads their schedule.

The backend, using Express, is responsible for displaying the dynamic information on the page (current semester, start date, end date, and academic breaks) and generating the .ics file with the corresponding events. It uses this lovely npm package called ical-generator to create the events. On my VPS, I use pm2 to run it.

To exclude certain dates, the backend uses (and exposes through the API) the backend\dates.json file. It uses the following format:

{
    "info": {
        "semester": "Fall 2024"
    },
    "start-end": {
        "start_date": "2024-09-04",
        "end_date": "2024-12-11"
    },
    "once": [
        {
            "title": "Labor Day",
            "date": "2024-09-02"
        }
    ],
    "range": [
        {
            "title": "Thanksgiving Recess",
            "start_date": "2024-11-28",
            "end_date": "2024-12-01"
        }
    ]
}

An example dates.json from Fall 2024

The once object takes a title and a date in YYYY-MM-DD format. These are for one off events that only take a single day. The range object takes a title, start, and end date, where every day within the range is excluded from being counted as an event. If you'd like to contribute an updated dates file for a different semester, that would be greatly appreciated! ❀️

About

πŸ“… A tool for students to generate .ics files from their unformatted schedule.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published