This project space is dedicated to the open source migration of the Durham Sign Up List Building Block to a REST-enabled LTI Tool Provider. this migration will be documented as an example of this process, and all lessons learned and gotchas encountered will be documented for those interested in doing this themselves for another integration. The principal developers on this project will be Mark O'Neil and Scott Hurrey, with Malcolm Murray and Stephen Vickers acting as advisors.
MEAN is an acronym that identifies the components of the stack:
MongoDb is a NoSQL database. It is very powerful in that it is fully functional, scalable, and configurable as one would expect in any database, but it is also extremely developer friendly. The documents are store in JSON, so there is no costly overhead necessary for the serialization and deserialization of JSON objects. There are two libraries available to implement MongoDb using the MEAN stack, the MongoDb driver and the Mongoose library. The driver is built and maintained by MongoDb, and is very easy to use, but it lacks some structure around the data. Mongoose is built as a wrapper over the MongoDb driver. This library allows the developer to create schemas to create conformity amongst the documents being stored. It also abstracts some of the deeper level functionality to make it easier for the developer to use. For this project, we will use Mongoose.
The MEAN stack employs Express to handle the web server aspects of the application. Express takes care of the application configuration, parses HTTP Request bodies automatically, and handles the routing for the application. It is the glue that holds the MEAN stack together. Express has long been coupled with NodeJS, and offers integration with several templating engines like pug (formerly jade). In this project, we will be forgoing this templating in favor of AngularJS.
Why the Sign Up List
We chose to migrate the sign-up list Building Block for a number of reasons. First, it is simple enough that the migration wouldn't be extremely time-consuming, yet complex enough that we will be able to exercise the REST APIs in multiple ways. Perhaps more importantly, this Building Block is extremely well adopted. This project is of particular significance for those migrating from Self- or Managed-Hosted Learn to the SaaS deployment and finding that the Building Block requires some refactoring to work in SaaS, but is also useful to Self- or Managed-Hosted interested in replacing the Sign Up List B2 with a RESTful implementation.