-
Notifications
You must be signed in to change notification settings - Fork 23
Home
lxHive is a new LRS (Learning Record Store), actively developed by Brightcookie G3 International. It's main intent is to be an intersection between flexibility, readability and speed.
- Aims to implement the xAPI spec in its entirety
- Follows OpenSource PHP-FIG conventions and coding standards
- Built on top of a solid and extensively tested framework - Slim
- Tested and well-documented
- 1.0.3
- MongoDB
- PHP >= 7.x, with mongodb extension
- Composer
- OpenSSL
- (optional) PHPUnit to run unit tests.
You should use composer
to install lxHive. It will automatically install any dependencies you might need and want.
xAPI is a service that allows for statements of experience to be delivered to and stored securely in a Learning Record Store (LRS). The xAPI specification is maintainted by the Advanced Distributed Learning (ADL) Initiative, sponsored by the Office of the United States Under Secretary of Defense for Personnel and Readiness.
All xAPI endpoints, as specified by the xAPI spec, are supported.
In addition, lxHive supports several additional, non-spec endpoints and parameters by default.
These include:
An additional count
parameter is provided in the root of the returned document to help developers iterate through all of the Statements.
Stored statements with file attachments are always served as type application/json
with a fileUrl
(GET).
Extending lxHive is easy. It's as simple as creating a couple new classes and adding them to your project. We are working towards adding an even simpler integration model, where you'd only need to include a composer package to add a new feature.
lxHive was written ground up with the goal of being easily extensible. As such, it is simple to add your own endpoints in the Plus namespace. To add a new basic endpoint you will most likely create 3 files - a controller, residing in the "Resource/{version}" folder, a "Service" where you manipulate/parse any data that needs to be presented and a "View" which is then presented to the user. More advanced use cases may require adding a new MongoDB collection and documents.
When issuing all requests, except to /about and /oauth endpoints, you must include the X-API-Version
header, so that lxHive knows by which version of the xAPI spec it should treat your request. As a result of careful planning, lxHive is inherently backwards and forwards compatible, meaning your xAPI-reliant apps will never stop working.
lxHive can run either in development or production mode. When in development mode, stack traces are printed when errors and exceptions are raised instead of their xAPI spec counterparts. This is important when testing xAPI spec compliance, as you will get several failures if you do not switch to production mode.
The server mode can be specified during setup, written directly in your Config.yml file or overridden using the SLIM_MODE environment variable. The names of the modes for production and development are "production" and "development", respectively.
A client is the application that is requesting the permissions in the users' name. This is usually an LMS or a standalone activity.
An agent is classified as a Person, which is the actual end-user performing all the actions that need to be tracked via xAPI.
lxHive supports basic authentication as a method to authenticate. At the moment, setting up a basic token is recommended for machine-to-machine communication and for creation of administrative supertokens.
lxHive supports OAuth 2.0 out of the box. Currently, we support the "Auth Code" flow. It is the preferred method of authentication when dealing with end users (real humans).
The aim of the lxHive is to eventually achieve full (100%) compatibility with ADL's official test suite. We also regularly perform tests using other tools such as our own proprietary test suites, one of which is publicly available here.
lxHive follows the guidelines of semantic versioning, as described here.
If you're a developer, we greatly encourage you to open issues, make enhancements and fix any bugs you might find. When doing so, you should follow our development guidelines.