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.
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.
To facilitate access in China, we provide a mirror: https://cn.plannable.org/. It is synchronized with https://plannable.org/ once per hour.
powered by electron
The desktop app of plannable can be downloaded from releases.
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.
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
Note: We recommend VS Code for development
- 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.
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.
Please refer to our Contribution Log or GitHub contribution statistics
Please refer to our documentation and contributing guide.
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:
- Fork this repository
- Overwrite src/config.ts with your custom configuration. See src/config.example.ts for reference
- Write your custom data loader that returns the correct objects in config.ts
- Make some tweaks to the source code in other places if needed.
- 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.
This project is licensed under GPL-3.0 - see the LICENSE file for details