Go implementation of a multi-component delivery drone system on Kafka or MQTT: security monitor, policy-gated proxy_request / proxy_publish, and delivery-focused components (cargo, delivery_drone).
| Path | Purpose |
|---|---|
cmd/<component>/ |
Binaries for each on-board component |
src/ |
Shared packages (bus, config, component, component logic) |
systems/deliverydron/ |
Docker Compose for the full system + per-component Dockerfiles under src/ |
docker/ |
Broker stack (Kafka / Mosquitto) merged by scripts/prepare_system.py |
scripts/prepare_system.py |
Merges broker + system compose and builds .generated/docker-compose.yml and .env |
docs/ |
System and API documentation |
- Go 1.21+ (for local builds)
- Docker / Docker Compose
- Python 3 + PyYAML (
pip install pyyaml) forprepare_system.py
From the repository root:
make vendor # optional: vendored modules for offline Docker builds
make init # ensure docker/.env exists (from example.env if missing)
make prepare # writes systems/deliverydron/.generated/*make system-up # prepare + docker compose up in deliverydron
# or manually:
cd systems/deliverydron && make docker-upStop:
make system-downBroker profile is controlled by BROKER_TYPE (kafka or mqtt) in the generated env file.
make unit-test
# or
go test ./...Layered tests (unit / module / integration) and optional Kafka e2e: see tests/README.md.
- SYSTEM.md — architecture, topics, components, security monitor, policies
- EXTERNAL_API.md — message shapes and integration notes for ground / platform systems
Internal components use:
{TOPIC_VERSION}.{SYSTEM_NAME}.{INSTANCE_ID}.{component}
Defaults: v1.deliverydron.Delivery001.<component>. Override with TOPIC_VERSION, SYSTEM_NAME, INSTANCE_ID, or per-service COMPONENT_TOPIC. See SYSTEM.md §2.