All your classes. One calendar file.
A productivity tool for UC Santa Cruz students. CruzCal lets users select their Class and produce calendar files based on the class events they can import to their preferred calendar. Users will also be able to import this Calendar to Google Calendar (built-in OAuth Consent).
Help students save time! Manually enter recurring events with all the important course information to a calendar each quarter can be annoying. We offer a simple method to go from just your list of courses to a complete calendar with recurring events for lectures and sections. Our ideal goal is integrating our service to allow students to directly sync their calendars with their registered courses.
We scrape the information from SlugSurvival and build our database of classes with regular updates to make sure class information is up to date. This database is then used to pull data whenever the user makes a request. We then use a calendar module to generate a .ics file or give the option to the user to log in with Google and add to their Google Calendar.
- Node.js v16
- psql: PostgreSQL interactive terminal
- yarn: Node.js package manager
> git clone https://github.com/tanmaymittal/cruzcal.git> cd cruzcal
> yarnThe following environment variables must be defined in backend/...
Postgres Sequelize DB:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_HOST
Google Calendar API (with userinfo.email, userinfo.profile, and calendar scopes):
- GOOGLE_CLIENT_ID
- GOOGLE_CLIENT_SECRET
Path variables:
- GOOGLE_AUTH_REDIRECT="/api/auth/google/redirect"
- GOOGLE_AUTH_URL="/api/auth/gooogle"
A session secret for encrypted cookies:
- SESSION_SECRET
> yarn test> yarn start- Select a Term.
- Select a Subject.
- Select a Course.
In addition, you can also filter the options by typing in the input.
Note: You will not be able to select/type a Subject until you have picked a Term. Similarly, you will not be able to select/type a Course until you have selected a Subject.
- Click the “+” icon below the bottom-most Subject/Course selections row.
- Select a Subject.
- Select a Course.
- Click the trashcan icon to the right of a Subject/Course selections row.
Note: The trashcan icon is hidden if there is only a single Subject/Course selections row.
You have 3 options to export the courses you have added to the calendar:
- JSON: will open a new tab with all of the information related to any courses you have added.
- ICS: your schedule will be downloaded to your computer as an .ics file.
- Google: your schedule is automatically imported into your UCSC Google Calendar.
In order to create an effective user experience, the calendar and list of courses were separated into two separated tabs on smaller devices. In order to switch the calendar and the list of courses added:
- Click “Add Courses” to view the list of courses added and to add/remove additional courses.
- Click “Calendar” to view the schedules of the courses you have added.
You can click the back button or the forward button in the browser to undo or redo adding or removing a course.
After adding any courses to the Calendar, you have the option to export a link to that Calendar with all of the added courses and send it to another person to import the schedule. In order to export and import the calendar:
- Add any course(s) to the Calendar.
- In the “Export Calendar” section, copy the URL link.
- In the “Import Schedule” section, paste the URL link and click “Import”.
- The courses will populate the Calendar and in the “Select Schedule” section.
After selecting course(s), if you change the Term, it will refresh all selected courses as if it were a new session. Meaning any of the selected courses will be removed.
- As a user, I want to search for a class using a search bar that automatically queries classes based on subject, class name, or both
- As a user, I want to store and retrieve multiple schedules within CruzCal
- As a user, I want to be able to create schedule groups with my friends to find common availabilities
- As a user, I want to see the mandatory/optional section times for a clas
- Tanmay Mittal
- Kitana Toft
- Andrew Lim
- Pablo Gaeta
- Mario Reyes



