LUT - Lecture notes pro 2000

Repository

Bitbucket

Idea

Students can save their notes during lectures under specific course. Notes can be created and edited by all users. Courses are loaded automatically to the database and they cannot be edited by user. All the notes can be browsed by course.

Motivation

There had been some earlier talk about possible need for this kind of system, so our team decided to try and see how we could implement it. We were also interested in the possibility of using Socket.IO for browser to server communication, which was something nobody in our group had previously used.

Technologies

Node.js w/ express - server side programming

MongoDB - database

Angularjs - client side programming

Socket.IO - realtime communication between server and client

Bootstrap CSS - html styling

and multiple smaller libraries

API endpoint

POST

/courses/<id>/notes (create new note)

GET

/courses/<id>/notes/<id> (show note)

/courses/<id> (list all notes by course id)

/courses (list courses)

/snapshots/<id> (list history snapshots for note)

PUT

/courses/<id>/notes/<id> (edit note by id)

User interface

Functionalities

Socket.io:

Multiple users can add, create and update lecture notes simultaneously. Collaboration is done by using socket.io streaming the content from and to all the users.

Node.js, express, CRUD style

Implementation of the web-service can be used to integrate the backend services to any program.

Revision history:

Backend takes revision snapshots from inputted texts twice in a minute, if there has been changes in the text. User can roll a revision from a history back any time.

How to run

npm install bower install

npm start - this starts the server at port 8080