- TypeScript 92%
- Vue 6%
- Nix 2%
- CSS <1%
- Docker <1%
ARD Eventhub #
ARD system to distribute real-time (live) metadata for primarily radio broadcasts.
Git #
Origin: github.com/swrlab/ard-eventhub
Mirrors:
Sync from the origin to both mirrors is described in Git sync.
Get Started and Documentation #
Important places to go ahead:
- The ard-eventhub repository
- Our Quickstart documentation
- The full docs on swrlab.github.io/ard-eventhub
- Internal documentation in Confluence
Local docs commands:
just docs # blume dev server
just docs-build # static build to dist/
Get involved #
- Open an issue for problems, that you might experience
- Join ard-eventhub/discussions for ongoing topics about formats, etc.
Service #
The Ingest service is responsible for receiving and publishing events and managing subscriptions. You'll find the core code in ./src/ingest/, with shared utilities in ./src/utils/. When MQTT_BROKER_URL is set, ingest publishes accepted events over MQTT to inbox/{institutionId} on the CN gateway as svc-ingest (Pub/Sub unchanged). Eventhub Connect talks NATS-native; local broker recipes are just nats-up / just nats-up-docker (src/connect/README.md). just dev also serves the operator UI on port 4173 (just ui-build first). just ingest starts the ingest service.
Modules #
This project will include two modules: Ingest and API. The first development step is to only supply the Ingest service. Each module uses their own endpoints and checks, while some parts are shared across both (utils). They also both have their own Dockerfiles to start the appropriate service.
Ingest #
The Ingest service is responsible for receiving and publishing events and managing subscriptions. You'll find the core code in ./src/ingest/.
Local Setup #
This project uses bun as package manager and runtime environment. Please note that this only applies to the package manager and CLI commands. JavaScript still uses the 'traditional' node runtime. Check the Bun documentation for installation instructions.
CLI tools (just, sops) are pinned in mise.toml. Install mise, then:
mise install
To install dependencies run:
bun install
To check for minor updates:
bun update
Changelog #
See CHANGELOG for latest changes.
License #
This project is licensed under the MIT License. The full text is in LICENSE.
Third-Party Components #
| Type | Name | License |
|---|---|---|
| Docker | node:22-alpine |
MIT |
| Docker | nats:2.14.6 |
Apache-2.0 |
| NPM | @google-cloud/datastore |
Apache License 2.0 |
| NPM | @google-cloud/pubsub |
Apache License 2.0 |
| NPM | @google-cloud/secret-manager |
Apache License 2.0 |
| NPM | @std/ulid |
MIT |
| NPM | @swrlab/utils |
MIT |
| NPM | hono |
MIT |
| NPM | zod |
MIT |
| NPM | firebase-admin |
Apache License 2.0 |
| NPM | google-auth-library |
Apache License 2.0 |
| NPM | jsonwebtoken |
MIT |
| NPM | luxon |
MIT |
| NPM | mqtt |
MIT |
| NPM | @nats-io/transport-node |
Apache-2.0 |
| NPM | @nats-io/jetstream |
Apache-2.0 |
| NPM | slug |
MIT |
| NPM | ulid |
MIT |
| NPM DEV | oxfmt |
MIT |
| NPM DEV | oxlint |
MIT |
| NPM DEV | blume |
MIT |
| NPM DEV | cookie |
MIT |
| NPM DEV | license-compliance |
MIT |
Authors #
This project was realized by