NUSMorge


A simple way to visualize multiple timetable between you and your friends. Works with a NUSMods url.

Running

Install dependencies bash npm install Run app bash node app.js

This will fire up the app at http://localhost:/3000. This vanilla app allows you to enter a NUSMods url into the input box, associate it with a name, and will then update the timetable to reflect the merge. You can do this as many times as you want.

Note that the only valid urls are the long URLS generated by NUSMods, such as this.

The Generate a link button let's you save your merged timetable and retrieves it next time. It requires a mongod running to work. A sample configuration file for testing is provided, bash mongod --config ./models/db/mongdb.conf

Now the button will give you a unique id which you can use to retrieve your merged timetable.

Structure

app.js configures express, routes request to appropriate functions.

routes/morge.js contains functions which retrieves/updates from/to the database

modes/db.js is our library to talk to mongodb via mongojs. If a different database is be used and this is the only file which needs to be edited.

util/modstt.js is a file we got directly from NUSMods, contains all module information.

util/rejsonify.js helps us to parse modstt.js into a format that we use, which we write to at public/js/mods.js

public/js/main.js is the entry point for our app, contains main logic.

public/js/users.js manages (adding and removing) users.

public/js/timetable.js updates, recaculates clashes and displays timetable.

public/js/mods.js contains all the module information in a format what we work with.

public/js/network.js contains our client side calls to the database.

public/js/genLinkMnager.js handles generating a unique id.