Skip to content

awesome-schedule/plannable

Repository files navigation

cover

License: GPL v3 Build Status codecov PRs Welcome FOSSA Status

Plannable

Previously known as Awesome-Schedule

A website which helps UVa students to schedule their classes more efficiently. Get your class selection done with the searching field and customize them with filters and sort options. Once you've finalized your class selection, hit "Generate" button and get all the possible schedules satisfying to your requirements.

Website

https://plannable.org/

Our website consists of only front-end components, i.e. all the scripts run in your browser and data are stored locally. It fetches data from Lou's list on page load and store it in browser cache.

However, optional backend storage features are available. Users can choose to login to a third-party website and stores their plannable profiles. This enables cross-device profile syncing. We currently support Hoosmyprofessor. If you wish to provide such service, please refer to our backend specification for more details.

Mirror

To facilitate access in China, we provide a mirror: https://cn.plannable.org/. It is synchronized with https://plannable.org/ once per hour.

Desktop App

powered by electron

The desktop app of plannable can be downloaded from releases.

Note for Windows and MacOS users

Your operating system may block the execution of the app because it is unrecognized/unsigned. We do not have the signed certificates which cost at least 200$ per year. You can proceed safely because there is no security risk.

Note for Linux users

If you use AppImage, you need to add execution permission before launching the file

chmod +x plannable-x.x.x.AppImage

If you use snap, you can install plannable from the snap store

sudo snap install plannable

Development

Note: We recommend VS Code for development

Install Dependencies and Launch Development Server

  • Node.js >= 10.16

Clone the repository and update data. The updatedata script will automatically clone https://github.com/awesome-schedule/data into scripts so the data can be access locally.

git clone https://github.com/awesome-schedule/plannable
npm run updatedata

Install Vue cli and other dependencies. Then, launch the development server

npm install -g @vue/cli
npm install
npm run serve

You need to serve the static files in scripts/data, because we only load local data in local development mode. To do so, open a new terminal and run

npm run data

in the project root, which will open a static http server listening to port 8000 with cross origin headers. This static server must run on localhost:8000.

Then you can visit the development server shown in the terminal.

Build Desktop App

You can use npx electron . to launch the native application powered by electron.

You can use npx electron-builder --win (or --mac, --linux) to build the native executable for your platform.

Built With

Contributors

Please refer to our Contribution Log or GitHub contribution statistics

Contributing

Please refer to our documentation and contributing guide.

Integrate with other schools/custom data source

Some efforts have been made to make it easier to integrate plannable with other universities. If you want to use plannable to create course-scheduling websites for other universities, you probably need to:

  1. Fork this repository
  2. Overwrite src/config.ts with your custom configuration. See src/config.example.ts for reference
  3. Write your custom data loader that returns the correct objects in config.ts
  4. Make some tweaks to the source code in other places if needed.
  5. Build and deploy to some other places

If you have questions when integrating plannable with other schools or want to deploy your favor of plannable to a subdomain of plannable (e.g. yourschool.plannable.org), feel free to contact us by GitHub issue or email.

License

This project is licensed under GPL-3.0 - see the LICENSE file for details