LUT - Lecture notes pro 2000

Repository

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

Report

Poster

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
  • node seed.js - this fetches the course information and stores it to db
  • npm start - this starts the server at port 8080

Issues

  • collaboration mode not working (fixed)
  • lag in user input when collaboration mode (fixed)
  • lag got fixed → caret position does not update (last minute fix)