ARD system to distribute real-time (live) metadata for primarily radio broadcasts. swrlab.github.io/ard-eventhub
README.md

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:

Local docs commands:

just docs        # blume dev server
just docs-build  # static build to dist/

Get involved #

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

at SWR Audio Lab