Note: Intended as a simple demo rather than an actual product.
The project emulates a web service that tracks current geographic locations of a number of beacons in real time based on incoming pings. As a real life example, consider tracking fleets of delivery vehicles, ships, airplanes, etc.
Run the server locally in dev mode:
export RUST_LOG=info,server=debug,tower_http=debug
cargo run --bin server --features bin,sled
Build release binaries:
cargo build --release --features bin,sled
The project is being developed and tested using the latest stable version of the Rust compiler.
See ARCHITECTURE.md for information about high-level technical decisions as well as where to start if you're looking to learn more about the code base.
Run unit tests:
cargo test
or using cargo-nextest:
cargo nextest run
Format code and run linter:
cargo fmt
cargo clippy --features bin,sled
- Event ingestion
- JSON over HTTP
- Binary over TCP and UDP (CBOR)
- Persistence
- Basic event processing
- Metrics
- Total mileage
- Average movement speed
- Alerts
- Entering/exiting pre-specified zone
- Metrics
- Random event generation
- REST API for current state
- Streaming WebSocket API to export push updates in real time
- Web UI to view live data on a map
- Structured logging
- Export in OpenTelemetry format