{"id":28147792,"url":"https://github.com/lumieducation/h5p-nodejs-library","last_synced_at":"2026-01-24T21:37:22.141Z","repository":{"id":37978839,"uuid":"185980513","full_name":"Lumieducation/H5P-Nodejs-library","owner":"Lumieducation","description":"h5p-nodejs-library is a collection of server and client-side packages that help you use H5P with a NodeJS backend","archived":false,"fork":false,"pushed_at":"2025-05-09T10:51:19.000Z","size":124824,"stargazers_count":174,"open_issues_count":53,"forks_count":86,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-09T11:55:19.303Z","etag":null,"topics":["h5p","nodejs"],"latest_commit_sha":null,"homepage":"https://lumieducation.github.io/H5P-Nodejs-library/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lumieducation.png","metadata":{"files":{"readme":"docs/README.md","changelog":"CHANGELOG.md","contributing":".github/contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["JPSchellenberg"],"patreon":"Lumieducation","custom":["https://www.paypal.com/donate?hosted_button_id=RGP9MBG2GMWC6"]}},"created_at":"2019-05-10T11:58:15.000Z","updated_at":"2025-05-09T10:51:20.000Z","dependencies_parsed_at":"2023-09-28T17:37:12.464Z","dependency_job_id":"8f0483bd-fd0d-48b4-8dc5-c53d65c3484c","html_url":"https://github.com/Lumieducation/H5P-Nodejs-library","commit_stats":{"total_commits":2718,"total_committers":20,"mean_commits":135.9,"dds":0.4768211920529801,"last_synced_commit":"69e1ea876e19f0d8b136f48e03a9de6fd2520540"},"previous_names":["lumieducation/h5p-editor-nodejs-library"],"tags_count":119,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lumieducation%2FH5P-Nodejs-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lumieducation%2FH5P-Nodejs-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lumieducation%2FH5P-Nodejs-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lumieducation%2FH5P-Nodejs-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lumieducation","download_url":"https://codeload.github.com/Lumieducation/H5P-Nodejs-library/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249328,"owners_count":22039049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["h5p","nodejs"],"created_at":"2025-05-15T00:22:20.632Z","updated_at":"2026-01-24T21:37:22.133Z","avatar_url":"https://github.com/Lumieducation.png","language":"TypeScript","funding_links":["https://github.com/sponsors/JPSchellenberg","https://patreon.com/Lumieducation","https://www.paypal.com/donate?hosted_button_id=RGP9MBG2GMWC6"],"categories":[],"sub_categories":[],"readme":"---\ntitle: Overview\ngroup: Documents\ncategory: Guides\n---\n\n# H5P-Nodejs-library\n\n[![CircleCI](https://circleci.com/gh/Lumieducation/H5P-Nodejs-library/tree/master.svg?style=svg)](https://circleci.com/gh/Lumieducation/H5P-Nodejs-library/tree/master) [![Coverage Status](https://coveralls.io/repos/github/Lumieducation/H5P-Nodejs-library/badge.svg?branch=release)](https://coveralls.io/github/Lumieducation/H5P-Nodejs-library?branch=release)\n\nThis library provides everything needed to create custom H5P servers running on\nNodeJS. It is written in TypeScript and fully typed, which makes it much easier\nto work with than the official PHP server. Of course, it's also possible to use\nthis library in projects with JavaScript (ES5) and you will still profit from\nthe typings by getting code completion in your IDE.\n\nEven though the repository includes a sample demo project that demonstrates its\nfunctionality, it's still your job to integrate this library into your own\nNodeJS server. This is called an \"implementation\" or \"plugin\" in H5P\nterminology. The implementation is responsible for exposing HTTP endpoints,\npersisting data and calling maintenance functions. **This library is not an\nout-of-the-box solution to get a standalone H5P server.**\n\nPlease note that even if most functionality of H5P works fine and the library is\nused by several high-volume projects, there are still some things that could be\nadded or improved. Check out the [status page of the project](./development/status.md) \nfor details.\n\n## Packages\n\nThe main Git repository is a monorepo that contains several packages, which can\nbe installed through NPM. The packages are meant to be combined.\n\n| Package name                                | Functionality                                                                                           | used in  |\n| ------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------- |\n| {@link \"@lumieducation/h5p-server\"}         | the core package to run H5P in NodeJS                                                                   | backend  |\n| {@link \"@lumieducation/h5p-express\"}        | routes and controllers for Express                                                                      | backend  |\n| {@link \"@lumieducation/h5p-webcomponents\"}  | native web components to display the H5P player and editor in the browser                               | frontend |\n| {@link \"@lumieducation/h5p-react\"}          | React components with the same functionality as the native web components                               | frontend |\n| {@link \"@lumieducation/h5p-mongos3\"}        | storage classes for MongoDB and S3                                                                      | backend  |\n| {@link \"@lumieducation/h5p-redis-lock\"}     | storage class for locks with Redis                                                                      | backend  |\n| {@link \"@lumieducation/h5p-html-exporter\"}  | an optional component that can create bundled HTML files for exporting                                  | backend  |\n| {@link \"@lumieducation/h5p-svg-sanitizer\"}  | an optional package that protects against XSS attack in SVGs if you want to enable SVG in content files | backend  |\n| {@link \"@lumieducation/h5p-clamav-scanner\"} | an optional package that checks file uploads for viruses                                                | backend  |\n\n## Examples\n\nThere are two example implementations that illustrate how the packages can be\nused:\n\n| Example type                                         | Tech stack                                                                                        | Location                                                                    |\n| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |\n| server-side-rendering                                | server: Express with JS template rendering client: static HTML, some React for library management | `../packages/h5p-examples`                                                  |\n| [Single Page Application](./examples/rest/README.md) | server: Express with REST endpoints client: React                                                 | `../packages/h5p-rest-example-server` `../packages/h5p-rest-example-client` |\n\n## Trying out the demo\n\nMake sure you have [`git`](https://git-scm.com/), [`node ≥ 10.16`](https://nodejs.org/)\n, and [`npm`](https://www.npmjs.com/get-npm) installed. If you use\nWindows, you must use bash (comes with Git for windows) as a command shell\n(otherwise scripts won't run).\n\n1. Clone the repository with git\n2. `npm install`\n3. `npm start`\n\nYou can then open the URL [http://localhost:8080](http://localhost:8080) in any\nbrowser.\n\n## Contributing\n\nLumi tries to improve education wherever it is possible by providing a software\nthat connects teachers with their students. Every help is appreciated and\nwelcome. Feel free to create pull requests. Check out the [documentation pages for developers](./development/getting-started.md) to get started.\n\nThis project has adopted the code of conduct defined by the Contributor\nCovenant. It can be read in full [here](../code-of-conduct.md).\n\n## Get in touch\n\n[Slack](https://join.slack.com/t/lumi-education/shared_invite/zt-3dcc4gpy-8XxjefFeUHEv89hCMkwmbw)\nor [c@Lumi.education](mailto:c@lumi.education).\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available,\nsee the [tags on this repository](https://github.com/Lumieducation/Lumi/tags).\n\n## License\n\nThis project is licensed under the GNU GENERAL PUBLIC LICENSE v3 License - see\nthe [LICENSE](../LICENSE) file for details\n\n## Support\n\nThis work obtained financial support for development from the German BMBF-sponsored research project \"lea.online\" (FKN: W-143600).\n\nRead more about them at the following websites:\n\n- lea.online - [https://blogs.uni-bremen.de/leaonline](https://blogs.uni-bremen.de/leaonline)\n- University of Bremen - [https://www.uni-bremen.de/en.html](https://www.uni-bremen.de/en.html)\n- BMBF - [https://www.bmbf.de/en/index.html](https://www.bmbf.de/en/index.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumieducation%2Fh5p-nodejs-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flumieducation%2Fh5p-nodejs-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumieducation%2Fh5p-nodejs-library/lists"}