We get this question a lot.
To do xAPI properly, you need an LRS to send your statements to. Statements are generally the focal point of xAPI, but LRSs play a vital role in creating rich collections of data and making the data interoperable.
To answer the question, we built this page explaining what goes into an LRS.
It’s a complicated undertaking to build an LRS, whether it’s an installed or a hosted-standalone-enterprise system, or a component of some other system like an LMS.
There are basic, specification-level requirements in order to call something an LRS. An LRS is much more than a database. An LRS, per the specification, includes 4 APIs, OAuth, and a collection of rules. There’s not a specific database structure or programming language that it has to use. There’s a lot that you need to add to the basic requirements to make a useful LRS, and this is why we put this page together. It gets to the root of what makes a conformant LRS, as well as what should be built around the LRS to make it a good one.
Whether you have decided to build an LRS or someone tells you they have an LRS, this will help you to ask the right questions to figure out exactly what you’re getting into.