- Svelte 43.7%
- JavaScript 36.9%
- Go 17.8%
- Python 0.6%
- Makefile 0.4%
- Other 0.6%
|
|
||
|---|---|---|
| .github/workflows | ||
| api | ||
| data | ||
| messages | ||
| project.inlang | ||
| schema | ||
| scripts | ||
| src | ||
| static | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .woodpecker.yml | ||
| AGENTS.md | ||
| Dockerfile.api | ||
| LICENSE | ||
| LICENSES.md | ||
| Makefile | ||
| ninja-logo.png | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| vite.config.js | ||
MeshCore Ninja
An open catalog of the MeshCore ecosystem — the regional and national networks people run, the LoRa devices that join them, the firmwares that power them, and the vendors who make the hardware. Each entry carries detailed specs, with a compatibility matrix and comparison tools across all collections.
⚠️ Work in progress. This site is brand new and data is still being ingested, so entries may be incomplete or incorrect. We'd appreciate any corrections — please open an issue or pull request.
It's a static SvelteKit site built from human-readable YAML files under data/. The YAML is validated against JSON Schema and compiled into a single data.json that the app consumes.
Quick start
npm install
npm run dev # start the dev server (builds data first)
npm run build # production build
npm run preview # preview the production build
The Go metrics API lives in api/:
make run-api # run the API against ./data
make test # validate data and run API tests
Working with the data
All content lives as YAML under data/:
networks/— organized regional/national MeshCore meshes and how to join themdevices/— supported LoRa hardwarefirmwares/— the reference build plus community and custom MeshCore firmwaresvendors/— hardware/firmware vendorscompatibility/— which firmwares run on which devicesglobals.yaml— shared definitions (node roles, MCU/radio catalogs, etc.)
npm test # validate all YAML against JSON Schema + referential checks
npm run build:data # regenerate data.json and static/schema/*.json
Run npm test after every data change. Before authoring or editing data, read data/RULES.md (the authoring guide) and data/SCHEMA.md (the field reference). Machine-readable contracts live in schema/.
Releases
MeshCore Ninja uses calendar versioning:
YYYY— release yearM— release month, without leading zeroPATCH— release number within that month, starting at0
Examples: 2026.6.0, 2026.6.1, 2026.7.0.
Releases are cut from main with a clean, up-to-date working tree:
make release VERSION=v2026.6.0
The release helper bumps package.json / package-lock.json, runs checks,
commits the version bump, creates an annotated tag, and pushes the branch + tag.
Tag pushes create a GitHub release and publish the API Docker image to
ghcr.io/meshcore-cz/meshcore-ninja-api.
Contributing
Edits are made by changing the YAML files in data/. See AGENTS.md for repo conventions and data/RULES.md for the authoring guide. Spotted something wrong or missing? Open an issue or PR — corrections of any size are welcome.
By contributing database content, you agree to dedicate your contribution to the public domain under CC0 1.0 Universal, and confirm that you have the right to do so. Please don't submit copyrighted descriptions, photographs or logos — link to the source or supply your own.
Licensing
The MeshCore Ninja database — device, firmware, application, network and compatibility data, schemas, and generated data exports — is dedicated to the public domain under CC0 1.0 Universal. The application source code (src/, scripts/, api/) is licensed under the MIT License.
Third-party names, trademarks, logos, photographs and other assets remain the property of their respective owners and are not covered by the CC0 dedication unless explicitly stated otherwise. See LICENSES.md for the full breakdown.