Skip to main content

zerodds_dashboard/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! `zerodds-dashboard` Bibliothek.
5//!
6//! Crate `zerodds-dashboard`. Safety classification: **COMFORT**.
7//!
8//! # Architektur
9//!
10//! Die `zerodds-dashboard`-Binary startet einen Mini-HTTP-Server, der:
11//! 1. Ein eingebettetes Single-Page-HTML-Dashboard ausliefert.
12//! 2. JSON-Endpoints fuer Live-Daten anbietet (Topics, Participants,
13//!    Histograms, Discovery-Graph).
14//! 3. Steuer-Endpoints fuer Recording-Start/Stop hat.
15//!
16//! Datenmodell ([`state::DashboardState`]) ist **schreib-/lesbar von
17//! externer App** — Konsumenten füllen den State aus DcpsRuntime
18//! (Built-in-Topics-Reader) und der Dashboard-Server serialisiert ihn
19//! als JSON. Damit ist der Server testbar ohne DDS-Stack.
20//!
21//! # Tauri 2.0 als Wrapper
22//!
23//! Der ursprueliche Plan F.4 sieht eine Tauri-2.0-Native-App vor.
24//! Diese Phase-A-Implementierung liefert das **Web-Backend** in
25//! reinem Rust ohne externe Crate-Deps (kein hyper, kein axum, kein
26//! Node.js). Eine spaetere Phase-B kann das gleiche Backend in eine
27//! Tauri-2.0-App einbetten — der HTML-Frontend ist bereits
28//! Tauri-kompatibel (verwendet Standard-Web-APIs).
29
30#![warn(missing_docs)]
31#![allow(clippy::print_stdout, clippy::print_stderr)]
32
33pub mod server;
34pub mod state;
35pub mod web;
36
37pub use server::{ServerError, run_blocking};
38pub use state::{
39    DashboardState, DiscoveryEdge, DiscoveryNode, HistogramSnapshot, ParticipantInfo,
40    RecordingStatus, TopicInfo,
41};