Create your perfect semester schedule with ease. A free, opensource and extensible mock schedule maker.
This project is still in an early phase of development!
Perfect Schedule is an online scheduling application that helps students create their ideal schedules. Every semester, students spend hours creating schedules using spreadsheets or other scheduling applications. Many of these applications are static, and require the user to manually input their course information. Perfect Schedule solves this problem by connecting to a rapidly growing database in order to automate data input. This intelligent tool is fast, effective, and easy to use. Simply tell Perfect Schedule your school’s name, and the courses you would like to take. With a few clicks, Perfect Schedule will list all possible schedules that can be made. Saving time has never been easier!
Our ultimate goal is to support all colleges in the world! Expand the database or improve the app if you could!
- Static pages with basic information
- Input box capable of fetching suggestions from DB via AJAX
- /$SCHOOL page -> ['browse courses', 'see available schedules']
- /generate page -> [fetches courses, renders available schedules.1']
- Extensible (has a configuration file keeps track of a list of supported school)
- Feed course data to DB -> if a school is in the config file but its collections are empty
- Handle GET '/api/suggest' request.
- Handle GET '/api/search' request.
- Marianopolis College
- Vanier College
- Dawson College
- John Abbott College
- Unable to add react-motion for better UX due to this error.
- ...
1: The course compatibility test will be done on the client side
Your school's course data is crucial to Perfect Schedule! To get the course data of your school, you can either talk to your school's official or just hack your school's course offering PDF.
To submit the data, make a pull request to this repo.
If you choose to convert the PDF manually (it is fun), here is a list of PDF converters
- Marianopolis College:
To get a list of detailed course objects
The search option has to be either empty or match exactly
GET '/api/search':
school: string.match(/([a-z]|\-)+/).isRequired // ex. marianopolis
course: string // ex. CALCULUS I
teacher: string.match(/[A-Z].*,\ [A-Z].*/) // ex. Doe, John
code: string // ex. SSS-LAQ
curl localhost:8000/api/search?school=marianopolis&code=SSS-LAQ
=> returns a list of all SSS-LAQ courses at Marianopolis
To emulate Google suggestion.
By default, all suggestions return maximum 5 data objects per request
GET '/api/suggest';
{
school: string.match(/([a-z]|\-)+/).isRequired // ex. 'marianopolis'
type: string.match(/(teacher|course|code)/).isRequired // ex. 'teacher'
val: string // ex. 'ab'
}
curl schedule-perfect.me/api/suggest?school=marianopolis&type=teacher&val=ob
=> returns a list of teacher objects whose name contains "ob"