An open catalog of the MeshCore ecosystem https://meshcore.ninja
  • Svelte 43.7%
  • JavaScript 36.9%
  • Go 17.8%
  • Python 0.6%
  • Makefile 0.4%
  • Other 0.6%
Find a file
tree 4330b34595
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat: add PWA shortcuts and integrate into Vite config
2026-06-27 23:09:56 +02:00
.github/workflows chore: add GitHub Actions workflow to update contributors daily 2026-06-26 22:47:26 +02:00
api feat: enhance advert handling with content hash for deduplication in live feeds 2026-06-26 10:38:17 +02:00
data feat: integrate Paraglide i18n 2026-06-27 20:48:46 +02:00
messages feat: integrate Paraglide i18n 2026-06-27 20:48:46 +02:00
project.inlang feat: integrate Paraglide i18n 2026-06-27 20:48:46 +02:00
schema feat: integrate Paraglide i18n 2026-06-27 20:48:46 +02:00
scripts feat: add PWA shortcuts and integrate into Vite config 2026-06-27 23:09:56 +02:00
src feat: add PWA shortcuts and integrate into Vite config 2026-06-27 23:09:56 +02:00
static chore: update .gitignore 2026-06-27 20:55:03 +02:00
.dockerignore feat: add release management and CI/CD workflows for API and Docker image 2026-06-22 14:10:47 +02:00
.env.example feat: add Plausible analytics integration with dynamic script URL in layout 2026-06-22 13:10:08 +02:00
.gitignore chore: update .gitignore 2026-06-27 20:55:03 +02:00
.woodpecker.yml fix 2026-06-22 21:31:07 +02:00
AGENTS.md feat: integrate Paraglide i18n 2026-06-27 20:48:46 +02:00
Dockerfile.api feat: integrate Prometheus metrics for telemetry and enhance API with versioning 2026-06-26 04:03:22 +02:00
LICENSE feat: add licensing information and data contribution guidelines to README and new LICENSE files 2026-06-22 15:40:14 +02:00
LICENSES.md feat: add licensing information and data contribution guidelines to README and new LICENSE files 2026-06-22 15:40:14 +02:00
Makefile feat: integrate Prometheus metrics for telemetry and enhance API with versioning 2026-06-26 04:03:22 +02:00
ninja-logo.png add branding assets and update favicon links 2026-06-21 09:22:17 +02:00
package-lock.json feat: perf tuning repeat 2026-06-27 22:39:34 +02:00
package.json feat: perf tuning repeat 2026-06-27 22:39:34 +02:00
README.md refactor: we dont want to use "official" 2026-06-26 22:28:52 +02:00
svelte.config.js feat: add PWA support 2026-06-27 20:49:01 +02:00
vite.config.js feat: add PWA shortcuts and integrate into Vite config 2026-06-27 23:09:56 +02:00

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 them
  • devices/ — supported LoRa hardware
  • firmwares/ — the reference build plus community and custom MeshCore firmwares
  • vendors/ — hardware/firmware vendors
  • compatibility/ — which firmwares run on which devices
  • globals.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 year
  • M — release month, without leading zero
  • PATCH — release number within that month, starting at 0

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.