H5P NodeJS Library
    Preparing search index...

    Architecture

    A H5P web-application using this library consists of four components, which communicate between each other:

    1. This library ( "@lumieducation/h5p-server" and possibly other @lumieducation packages) on the server-side (in yellow below)
    2. Your server (implementation of the interfaces of this library + other endpoints, in blue below)
    3. Your web client (running in the browser, in blue below, "@lumieducation/h5p-webcomponents" and "@lumieducation/h5p-react" can help your here if you want to write a SPA application)
    4. Joubel's H5P player / editor client (downloaded by you and served by your server, in grey below)

    As you can see, this library is not an out-of-the-box solution for all your needs, but requires you to implement your own server and web client.

    The diagram shows how the four components interact in a selection of use cases. Each use case has a specific colour and can be traced through the system by it.

    Diagram showing the components at work

    You have to implement all the components shown in blue. This library ( "@lumieducation/h5p-server") provides the parts in yellow and the grey parts are provided by Joubel's H5P client libraries (downloaded from the PHP implementation). The Express package ( "@lumieducation/h5p-express") deals with all AJAX calls by the H5P JavaScript client. You are free to use it, but can also implement the HTTP endpoints yourself.

    Note: The diagram doesn't show a complete list of all use cases and is only intended to illustrate how everything plays together! There is a lot more functionality in the packages, which is not listed here.

    The player is simpler, as it doesn't have as many endpoints, but works in a comparable way to the structure in the diagram.

    There is a basic example implementation of the server and client (blue parts) using Express (and server-side rendering) in the /packages/h5p-examples folder. There is also a more advanced SPA example in the /packages/h5p-rest-example-server and /packages/h5p-rest-example-client folders. Check out the documentation on it here.