Tin Can / xAPI Learning Record Store in "Go" - in progress
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Tin Can / xAPI Learning Record Store in "Go"

** Taking a break from the project for a bit 10/18/2013 **

Currently starting with the Statement API Refactoring and Tests will come later (looking at http://frisbyjs.com/ for a platform independent xAPI REST unit tests)

Packages used: (add issue if you want me to add to repository)

// routing
$ go get github.com/gorilla/mux

// guid creation
$ go get github.com/nu7hatch/gouuid

// monogdb (requires bzr to download)
// get latest version http://blog.labix.org/2013/09/05/mgo-r2013-09-04-released
$ go get labix.org/v2/mgo
$ go get labix.org/v2/mgo/bson


  • POST statement(s) w/ conflict check
  • PUT statement w/ conflict check
  • POST/PUT Void statement
  • GET statement by voidStatementId and StatementId

In Progress:

  • GET complex query
  • GET more query due to limit
  • Auth and Cross Origin Requests
  • REST API Tests
  • Deal with attachments
  • Concurrency
  • Statement Validation

Not production ready

Developed because:

  • Right tool for the job (fast and few system setup requirements)
  • Can run on Windows and Linux servers or Google App Engine
  • Wanted to start an Open Source Project
  • Wanted to learn GO and MonogoDB
  • The front end can then be written in any language (PHP, .Net, ...)
  • Can be re-developed in any language easily

Lots of help from these resources:

Other Useful Resources:


Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.