All your classes. One calendar file

Overview

CruzCal

Check out the Figma for the designs

What is CruzCal?

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).

What is the goal?

Help students save time!

How is this done?

We scrape the information from PISA and essentially 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.

Team

Tanmay Mittal Kitana Toft Andrew Lim Pablo Gaeta Mario Reyes

Comments
  • Added dynamic term/subject/course dropdown

    Added dynamic term/subject/course dropdown

    Mostly working. Known bug: after deleting a row, the state is correct, but the row that moves into the position has access to the subject/courses available before deletion. Need a way to reset fetched data in a component when a row is deleted.

    opened by pablofgaeta 1
  • Notify user if adding a class has a time conflict (a modal/popup should appear that notifies the user about the time conflict, but still give them the option to add a class.)

    Notify user if adding a class has a time conflict (a modal/popup should appear that notifies the user about the time conflict, but still give them the option to add a class.)

    Overview

    When a user attempts to add a class that has a time conflict, the user should be notified about the time conflict, but should still allow them to keep the overlapped class.

    Goal

    Display an alert or modal about the time conflict. Should display which classes have a time conflict

    Requirements

    • [x] Design an alert/modal
    • [x] Algorithm to do a linear search through the classes atom to determine if a time conflict exists
    frontend 
    opened by Aslimmax 1
  • Allow users to sign in with Google to associate a user with calendars

    Allow users to sign in with Google to associate a user with calendars

    Overview

    Users should be allowed to sign in with Google so that they can see their saved calendars

    Goal

    Allows users to click on a sign in button to log them into Google

    Requirements

    • [ ] Add a button to allow a user to login with Google
    • [ ] Associate Users with Calendars in the table based on the Google Account
    frontend backend 
    opened by Aslimmax 1
  • Endpoint for Google Calendar generation

    Endpoint for Google Calendar generation

    Overview

    When a user signs into Google, the classes they added are not syncing up with their Google Calendar.

    Goal

    Create an endpoint through Google using the Google Calendar API to sync the class schedule created on CruzCal onto Google Calendar.

    Requirements

    • [x] Create an endpoint that syncs to Google's Calendar API
    backend 
    opened by Aslimmax 1
  • Implement method to convert courseid+term list into a calendar, given user oauth tokens

    Implement method to convert courseid+term list into a calendar, given user oauth tokens

    Overview

    Problem statement

    Goal

    Requirements

    • [ ] Implement a function that calls API xyz
      • [ ] We want to make sure that that the function returns within 80ms
    backend 
    opened by Aslimmax 1
  • ics File Generation

    ics File Generation

    Overview

    When the user selects classes, they should be added to a schedule. The user then should be able to download this schedule as an .ics file.

    Goal

    Enhance user experience by giving them the option to download their class schedule.

    Requirements

    • [x] Learn and explore ICS libraries
      • [x] Generate example events
      • [x] Implement a function that takes in a calendar event json as argument
        • [x] Returns .ics file for the user to download
      • [x] Test
      • [x] Documentation
    backend 
    opened by tanmaymittal 1
  • Google Calendar Implementation

    Google Calendar Implementation

    Overview

    After signing in, the user selects a class. This class should be added to their calendar.

    Goal

    Example: Enhance user experience by reducing animation delay. We want the animation to be as visible as possible. Given user Google OAuth token, add a calendar event for the selected class.

    Requirements

    • [x] Learn Google Calendar API
      • [x] Implement a function that takes in OAuth token and a calendar event json as argument.
        • [x] Returns boolean about event completion
    • [x] Test
    • [x] Documentation
    backend 
    opened by tanmaymittal 1
  • Implemented schedule endpoint for generate user schedule

    Implemented schedule endpoint for generate user schedule

    In the schedule endpoint for our API, I simulate a database query, but I am just calling the Slug Survival API endpoints to build up the response object with the user's course identifiers. I also included helper functions that will be useful for the route logic.

    backend 
    opened by voidmario 1
  • Trash Button

    Trash Button

    Without Calendar Preview: On select, the current row will be removed.

    With Calendar Preview: When a class is deleted, the course object should be deleted from the state The class should be removed from the calendar preview

    frontend 
    opened by kctoft 1
  • Production Code

    Production Code

    Overview

    Users cannot access cruzcal as a service.

    Goal

    Let users interact with the website and generate calendars.

    Requirements

    • [x] Push code to the server
    • [x] Deploy the frontend using nginx
      • [ ] Configure port 4200
      • [ ] Update CName records using Google Domains
    • [x] Deploy the backend using nginx
      • [ ] Use tmux
      • [ ] Configure port 3010
    • [ ] Documentation
    frontend backend 
    opened by tanmaymittal 0
  • Endpoint to get Calendars of a user / One calendar by id

    Endpoint to get Calendars of a user / One calendar by id

    Overview

    When a user visits the site and is logged in, their calendar does not show up

    Goal

    Create an endpoint to the backend that associates the Calendars of a user with a unique property from their Google account.

    Requirements

    • [ ] Create an endpoint that retrieves the Calendars of a user
    backend 
    opened by Aslimmax 0
  • Define Calendar and User table

    Define Calendar and User table

    Overview

    Create a table in the database to store a Calendar instance and User information

    Goal

    Store Calendar data and make a symbolic link to a User

    Requirements

    • [ ] Create the Calendar and User tables in the database
    • [ ] Determine what information to store and how to store them
    backend 
    opened by pablofgaeta 3
Owner
Aspiring Software Developer
null
πŸžπŸ“…A JavaScript calendar that has everything you need.

A JavaScript schedule calendar that is full featured. Now your service just got the customizable calendar. ?? Table of Contents Collect statistics on

NHN 10.4k Jan 3, 2023
gcal/outlook like calendar component

react-big-calendar An events calendar component built for React and made for modern browsers (read: IE10+) and uses flexbox over the classic tables-ce

Jason Quense 6.2k Dec 29, 2022
An iCal API to see the 42 events in a calendar.

42cal An iCal API to see the 42 events in a calendar. Installation You have to create a new intra app (Settings > API > REGISTER A NEW APP). Fill in t

Valentin 4 Jan 17, 2022
Create Persian Calendar as html helper with tag builder c# , and convert selected persian date to gregorian date

Persian-Calendar Use JS,Html,CSS,C# White theme for Persian Calendar , easy to use. Create Persian Calendar as html helper. Use Tag builder in c# for

Tareq Awwad 4 Feb 28, 2022
Converts Gregorian calendar to ethiopian

It is package that Converts Gregorian calendar to ethiopian. And also Ethiopian calendar to Gregorian calendar. Ethiopian calendar is unique for having 13 months, 12 months each with 13 days and 1 more month with 5 or 6 days. It is also 7/8 years behind the European/Gregorian calendar.

Dagmawi zewdu 5 Mar 4, 2022
Sync your personal calendar to your work calendar, privately πŸ’

Callibella ?? It is considered unusual among Callibella in that it gives birth to only a single baby instead of twins, the norm for Callibella. Wikiep

Yo'av Moshe 19 Oct 12, 2022
πŸ€– Tailwind CSS assistant helps you to edit classes (includes JIT & ignores purge), toggle breakpoint classes on an element and view current breakpoint

Tailwind CSS Assistant See it in action on this example website ?? βœ… Small JavaScript package that helps you work with Tailwind CSS by... Showing you

Mark Mead 30 Dec 28, 2022
Download all Moodle files with one click. This is a Chrome extension built to save time and effort from downloading files manually one by one!

Moodle Downloader Extension Moodle downloader extension for Chrome. The extension is tested with both the TUM moodle and the official moodle demo. Not

Zhongpin Wang 8 Nov 15, 2022
Feel free to create new file, don't hesitate to pull your code, the most important thing is that the file name here must match your nickname so that file does not conflict with other people.

Hacktoberfest Indonesia Apa Itu Hacktoberfest ? Hacktoberfest adalah acara tahunan yang bertujuan untuk mendorong berkontribusi kedalam ekosistem open

Juan Daniel 5 Dec 15, 2022
Moxiecode 5.6k Jan 1, 2023
A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM deffiniation and appropriate file structure.

Welcome to function-stencil ?? A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM

Ben Smith 21 Jun 20, 2022
Serve file server with single zip file as file system in Deno.

zipland Serve file server with one-single zip file in Deno. Support zip just zip32 with deflated or uncompressed serving plaintext deflate Examples Yo

Yongwook Choi 18 Nov 2, 2022
With this File Manager prepared for PHP/Js, you can perform all file operations on your server without any problems.

FileManager With this File Manager prepared for PHP/Js, you can perform all file operations on your server without any problems. Instead of downloadin

Tanzer Demir 4 Sep 23, 2022
A multipurpose bot, a clan bot, a all in one bot. The one bot u need for ur server originally made as Milrato discord Bot and by Tomato6966.

Public Bot and Support Server! Invite the Public Version of this Bot so you don't need to host it by yourself or join my Discord server to get a custo

Tomato6966 472 Dec 25, 2022
An interactive app that allows adding, editing and removing tasks of a to-do list. Drag-and-drop featured added. Webpack was used to bundle all the Js modules in to one main Js file.

To-do List A to-do list app This app let you to set your own to-do list. Built With HTML CSS JavaScript WebPack Jest Live Page Page Link Getting Start

Kenny Salazar 7 May 5, 2022
A Tempermonky / Greasemonkey plugin which can help you export your class schedule to the calendar on your phone / pad / PC / Mac.

WHU Class Schedule Export as iCS Languages: English | η°‘ι«”δΈ­ζ–‡ | 繁體中文 Changelog v0.90.1 - Sep 18, 2022 Fix bugs: Fix an error when a class have multiple s

Ostrich_B 6 Sep 7, 2022
Co-Pilot is a discord Bot designed to be the all-in-one, open-source Discord bot that handles all your server needs.

Welcome to Co-Pilot Bot repo! ?? ?? Co-Pilot (All-in-one Discord Bot) Co-Pilot is a discord Bot designed to be the all-in-one, open-source Discord bot

YMafalha 19 Nov 11, 2022
All-in-one solution for configuring ESLint in all of your projects

✨ All-in-one solution for configuring ESLint in all of your projects ✨ ⚠️ May not work in your project. This is related to eslint module resolution pr

Eslint Kit 53 Nov 28, 2022
CLI utility that parses argv, loads your specified file, and passes the parsed argv into your file's exported function. Supports ESM/TypeScript/etc out of the box.

cleffa CLI tool that: Parses argv into an object (of command-line flags) and an array of positional arguments Loads a function from the specified file

Lily Scott 9 Mar 6, 2022