Skip to content

A chrome extension that transfers timetable from CLiC to Google Calendar.

License

Notifications You must be signed in to change notification settings

sycanz/schedulr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Schedulr Logo

Schedulr

A chrome extension that transfers MMU timetable into Google, Outlook, Apple Calendar (and more)

License GitHub release

schedulr3.0.0.mp4

Table of Content

Requirements πŸ‘€

  • MMU student with "Active" current student status ONLY.
  • Chrome browser ONLY.

Installation πŸ“¦

  1. Go to the extension's page or search up "Schedulr" in Chrome Web Store.
  2. Click "Add to Chrome".

Usage πŸ•ΉοΈ

Note: Some steps after step 4 may vary depending on your target calendar.

For students:

  1. Go to "View My Classes/Schedule > By Class" in CliC. (Ensure all subjects are expanded)

For lecturers:

  1. Go to "Instructor WorkCenter > My Weekly Schedule" in CLiC.

  1. Open the extension by using the shortcut key or by clicking the extension icon.
  2. An authentication window will appear, grant permission for both scopes and then reopen the extension.

To import calendar into Google Calendar:

  1. Select Transfer to Google Calendar, then click Confirm.
  2. Select all the necessary options.
  3. Press the Submit button to transfer timetable to Google Calendar.

To import calendar into other calendars (like Outlook, Apple Calendar):

  1. Select Download an .ics file, then click Confirm.
  2. Select all the necessary options.
  3. Press the Submit button to download the .ics file.
  4. Go to your target calendar and import the .ics file.

Tip: An .ics file lets you import events into other calendar apps like Outlook.

Key binding ⌨️

The shortcut key opens up the popup page

  • Linux and Windows - Alt+Shift+S
  • macOS - Command+Shift+S

Project status ⏳

Schedulr version 3.0.2 is available on Chrome Web store as of now.

Contributing 🀝🏻

Schedulr is an open-source project designed to assist fellow MMU peers. I invite you to participate in various ways to contribute and enhance the project!

Feel free to explore the contribution guidelines below to get started. Your involvement is greatly appreciated!

Development Guide πŸ“š

Prerequisites

  • Javascript, basic web scraping knowledge
  • Basic understanding of Google Calendar API
  • Familiar with chrome extension development, manifest v3. Easy tutorial by google here

Getting Started

Note: This guide is based on Google Chrome's workflow, so some of the steps (especially manifest.json format) may not directly apply to other browsers. Please refer to the respective browser's documentation for more information.

Uploading the extension to your browser

  1. Clone the Repository

    $ git clone https://github.com/sycanz/schedulr
  2. Prepare manifest.json

    • Rename template_manifest.json to manifest.json
    • Remove the "key" and "oauth2" fields (for now).
  3. Load the Extension into Chrome

    • Open Chrome browser and go to chrome://extensions/
    • Enable Developer mode (toggle switch at the top right)
    • Click on Load unpacked and select the cloned repository
    • The extension should now be loaded in your browser

Setting up Google Calendar API

  1. Set Up Google Cloud Project:

    • Create a new project in the Google Cloud Console.
    • Enable the Google Calendar API.
    • Generate an OAuth 2.0 credentials (OAuth Client ID) with the application type Chrome extension, Item ID (can be retrieved from chrome://extensions).
  2. Environment Configuration:

    • Add the "oauth2" fields to the manifest.json file and fill in the client_id (the one you generated) and scopes (remain as usual) fields.
  3. Test and Contribute:

    • Test the extension by importing your timetable into Google Calendar.
    • Make changes and submit a pull request. Please follow the pull request template here.

Tech Stack πŸš€

  1. Javascript
  2. Google calendar API
  3. HTML, CSS

Changelog πŸ“

Detailed changes for each release are documented in the release notes.

Privacy policy πŸ“œ

Please read the Privacy Policy for this extension before proceeding.

License βš–οΈ

This project is licensed under the GNU General Public License v3.0 - see the LICENSE

Buy me a coffee β˜•

I seem to have developed a bit of an addiction to espresso shots, so if you're feeling generous, feel free to buy me a coffee!

Credit πŸŽ‰

This project was developed at Hackerspace MMU. Also shoutout to a couple of friends who helped me out on this project.

Frequently Asked Questions (FAQs) πŸ€”

Q: What browser does Schedulr currently support?

A: Google Chrome as of now.

Q: Do I have to pay for this extension?

A: No, Schedulr is free to use for all active MMU students/lecturers and open-source.

Q: Why are some of my classes not showing up in the timetable?

A: Ensure you have expanded all subjects in the "By Class" page.

Q: Do I need to grant permission every time I open the extension? And should I grant permission for both scopes in the authentication window?

A: You only need to grant permission once and you're good to go. And yes you absolutely should grant permission for both scopes, otherwise the extension will not work properly.

Q: Should I be worried about my privacy when using this extension?

A: No, the extension only reads your timetable and transfers it to your calendar. It does not store any personal data.

Q: Can I use this extension for other universities?

A: No, this extension is specifically designed for MMU students and lecturers only.

Q: Are there any plans to support other browsers?

A: Maybe in the future, but for now, the focus is on Chrome.

Q: Can I rely on this extension for my timetable?

A: Somewhat, reason being CLiC might have unexpected bugs or changes that might affect the extension.

Q: How can I contribute to this project?

A: There are things like bug fixes, feature requests, code, and documentation that you can contribute to. Check out the contribution guidelines

Q: Where can I get any help or support?

A: Check if the encountered issues are mentioned in this documentation. If not, you can communicate with me through email, issue tracker, or discord