chore: add workspace metadata and crate READMEs for publishing
Add license, authors, repository, documentation, keywords, categories, and readme fields to all crate Cargo.toml files. Add crate-level README files for documentation. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -3,5 +3,12 @@ name = "wifi-densepose-api"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
description = "REST API for WiFi-DensePose"
|
||||
license.workspace = true
|
||||
authors = ["rUv <ruv@ruv.net>", "WiFi-DensePose Contributors"]
|
||||
repository.workspace = true
|
||||
documentation.workspace = true
|
||||
keywords = ["wifi", "api", "rest", "densepose", "websocket"]
|
||||
categories = ["web-programming::http-server", "science"]
|
||||
readme = "README.md"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# wifi-densepose-api
|
||||
|
||||
[](https://crates.io/crates/wifi-densepose-api)
|
||||
[](https://docs.rs/wifi-densepose-api)
|
||||
[](LICENSE)
|
||||
|
||||
REST and WebSocket API layer for the WiFi-DensePose pose estimation system.
|
||||
|
||||
## Overview
|
||||
|
||||
`wifi-densepose-api` provides the HTTP service boundary for WiFi-DensePose. Built on
|
||||
[axum](https://github.com/tokio-rs/axum), it exposes REST endpoints for pose queries, CSI frame
|
||||
ingestion, and model management, plus a WebSocket feed for real-time pose streaming to frontend
|
||||
clients.
|
||||
|
||||
> **Status:** This crate is currently a stub. The intended API surface is documented below.
|
||||
|
||||
## Planned Features
|
||||
|
||||
- **REST endpoints** -- CRUD for scan zones, pose queries, model configuration, and health checks.
|
||||
- **WebSocket streaming** -- Real-time pose estimate broadcasts with per-client subscription filters.
|
||||
- **Authentication** -- Token-based auth middleware via `tower` layers.
|
||||
- **Rate limiting** -- Configurable per-route limits to protect hardware-constrained deployments.
|
||||
- **OpenAPI spec** -- Auto-generated documentation via `utoipa`.
|
||||
- **CORS** -- Configurable cross-origin support for browser-based dashboards.
|
||||
- **Graceful shutdown** -- Clean connection draining on SIGTERM.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```rust
|
||||
// Intended usage (not yet implemented)
|
||||
use wifi_densepose_api::Server;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
let server = Server::builder()
|
||||
.bind("0.0.0.0:3000")
|
||||
.with_websocket("/ws/poses")
|
||||
.build()
|
||||
.await?;
|
||||
|
||||
server.run().await
|
||||
}
|
||||
```
|
||||
|
||||
## Planned Endpoints
|
||||
|
||||
| Method | Path | Description |
|
||||
|--------|------|-------------|
|
||||
| `GET` | `/api/v1/health` | Liveness and readiness probes |
|
||||
| `GET` | `/api/v1/poses` | Latest pose estimates |
|
||||
| `POST` | `/api/v1/csi` | Ingest raw CSI frames |
|
||||
| `GET` | `/api/v1/zones` | List scan zones |
|
||||
| `POST` | `/api/v1/zones` | Create a scan zone |
|
||||
| `WS` | `/ws/poses` | Real-time pose stream |
|
||||
| `WS` | `/ws/vitals` | Real-time vital sign stream |
|
||||
|
||||
## Related Crates
|
||||
|
||||
| Crate | Role |
|
||||
|-------|------|
|
||||
| [`wifi-densepose-core`](../wifi-densepose-core) | Shared types and traits |
|
||||
| [`wifi-densepose-config`](../wifi-densepose-config) | Configuration loading |
|
||||
| [`wifi-densepose-db`](../wifi-densepose-db) | Database persistence |
|
||||
| [`wifi-densepose-nn`](../wifi-densepose-nn) | Neural network inference |
|
||||
| [`wifi-densepose-signal`](../wifi-densepose-signal) | CSI signal processing |
|
||||
| [`wifi-densepose-sensing-server`](../wifi-densepose-sensing-server) | Lightweight sensing UI server |
|
||||
|
||||
## License
|
||||
|
||||
MIT OR Apache-2.0
|
||||
Reference in New Issue
Block a user