/perfect-schedule

:relaxed: Create your perfect schedule with ease

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Create your perfect semester schedule with ease. A free, opensource and extensible mock schedule maker.

Note

This project is still in an early phase of development!

What exactly is Perfect Schedule

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!

Contribute

Our ultimate goal is to support all colleges in the world! Expand the database or improve the app if you could!

Roadmap

Client side
  • 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']
Server and Database
  • 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.
School Data
Bugs and Issues
  • Unable to add react-motion for better UX due to this error.
  • ...

1: The course compatibility test will be done on the client side

Data submission

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

API reference

Search course

To get a list of detailed course objects

Note

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
Example
curl localhost:8000/api/search?school=marianopolis&code=SSS-LAQ

=> returns a list of all SSS-LAQ courses at Marianopolis

Get Suggestions

To emulate Google suggestion.

Note

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'
}
Example
curl schedule-perfect.me/api/suggest?school=marianopolis&type=teacher&val=ob

=> returns a list of teacher objects whose name contains "ob"