Deprecation Notice: Winston is no longer maintained as of April 11, 2017.
Winston is a schedule-building web app for University of Alberta students.
- Curious about a course? Browse the catalog with realtime search
- Got a busy semester? Block off your commitments and Winston will work around them
- Like to sleep in? Block off your mornings
It lives at https://heywinston.com.
Winston is not official University of Alberta software - it is built by students for students.
Winston relies on classtime for course data and schedule generation. classtime has extensive documentation linked on its own project README. classtime was developed in parallel with Winston, but is very extensible to other platforms.
Winston itself is an AngularJS web app. It does not directly talk to the University of Alberta LDAP server, it requests API endpoints from classtime. Neither does it do schedule generation - this is also done on classtime. Winston consists of two main UI pieces: an accordion to show couse data, and a schedule view for showing schedules and adding busy time.
The course data is displayed in an triply nested accordion which lazily renders each panel as its opened. Lazily rendering the accordion has huge performance benefits that allow it to be smooth on both web and mobile.
For the schedule view, it uses a heavily customized version of FullCalendar. The calendar allows resizeable busy times to be drawn on it with a click of the mouse or tap of the finger.
Usability is a huge focus. We aim to not need instructions or help buttons - the UI should be intuitive enough. Mobile friendliness is also a huge focus. Each feature works the same on mobile as web, and we try to minimize performance loss.
Winston uses a Node server and Jade templates, so it's pretty easy on the eyes. It's built in production with gulp.js, and hosted in Heroku.
- $ npm install
- $ node app.js
The npm install
will install all npm and bower dependencies in their respective directories, and run the gulp.js build script.
When running locally, it will default to serve unconcatenated/unminified dependencies. To mimic running in production, hardcode the prod
variable to true in /app.js
. This will serve the gulp.js built concatenated/minified dependencies exactly as-is on the production site. To force the gulp.js build script to run again (if something is changed locally, for instance) run $ gulp default
.
Feel free to submit an issue or contact me -- suggestions, bugs, ideas, or interest to help.
The goals of Winston and classtime together are to help students quickly make schedules tailored around their lives.
- John Resig, Ben Russell, and Ben Grawi's schedule maker for the Rochester Institute of Technology
- morinted, t0xicCode, and DanielMurdoch's 'schedule-generator' for the University of Ottawa
- cosbynator's 'course qualifier' for the University of Waterloo, demo: https://www.coursequalifier.com/
- Uberi's 'COURSERATOR3000' for the University of Waterloo
- scott113341's 'SCUclasses' for Santa Clara University, demo: https://scuclasses.com
- adicu's 'Courses' for Columbia University, demo: https://courses.adicu.com
- adiciu's course data API for Columbia University
- arxanas's 'schedumich' for the University of Michigan