{
  "markdown": "# Stationary\n\nStationary is a .NET 10 toolkit for Bluetooth Fitness Machine Service (FTMS) equipment. It provides high-performance, transport-neutral codecs together with BLE connectivity, serialized Control Point coordination, telemetry presentation, heart-rate support, and a .NET MAUI dashboard for multiplatform app delivery. The dashboard uses ReactiveUI and Reactive Extensions for reactive MVVM and real-time event processing.\n\n![Stationary FTMS dashboard Session view with live telemetry and heart-rate analytics](Screenshot%202026-09-11%20at%2019.50.29.png)\n\n## Projects\n\n| Project | Purpose |\n| --- | --- |\n| `Stationary.Ftms` | Allocation-conscious FTMS payload codecs and validation. |\n| `Stationary.Ble` | BLE transport integration. |\n| `Stationary.Ftms.Client` | Serialized FTMS Control Point operations and latest-only telemetry delivery. |\n| `Stationary.Ftms.Dashboard.Core` | Telemetry history and dashboard-domain models. |\n| `Stationary.HeartRate` | Heart-rate telemetry and cycling-LTHR analytics. |\n| `Stationary.Ftms.Dashboard` | .NET MAUI dashboard for compatible FTMS equipment. |\n\n## Reactive Architecture\n\nThe dashboard is a fully reactive .NET MAUI application built with ReactiveUI's reactive MVVM model and Reactive Extensions (Rx). `ReactiveCommand` represents user operations, while observable state derives UI feedback and availability from the underlying streams.\n\nReactive pipelines coordinate real-time BLE connection lifecycle, FTMS telemetry, heart-rate measurements, Fitness Machine Status updates, Control Point responses, and dashboard commands. They merge, sample, serialize, schedule, and dispose these concurrent streams so the UI stays responsive while displaying the latest available data.\n\n## Prerequisites\n\n- .NET SDK `10.0.401`, as pinned in [global.json](global.json).\n- The .NET MAUI workload for the platform being built. On macOS, install the Mac Catalyst workload for the currently configured dashboard target:\n\n```bash\ndotnet workload install maui-maccatalyst\n```\n\n## Build And Test\n\nRestore packages once, then use the no-restore commands for normal iteration:\n\n```bash\ndotnet restore Stationary.slnx\ndotnet build Stationary.slnx --no-restore\ndotnet test --solution Stationary.slnx --no-restore\ndotnet format Stationary.slnx --verify-no-changes --no-restore\n```\n\n## Run The Mac Catalyst Dashboard\n\nOn Apple silicon:\n\n```bash\ndotnet build src/Stationary.Ftms.Dashboard/Stationary.Ftms.Dashboard.csproj \\\n  -t:Run \\\n  -f net10.0-maccatalyst \\\n  -r maccatalyst-arm64 \\\n  --no-restore\n```\n\nUse `maccatalyst-x64` on an Intel Mac.\n\nThe dashboard uses .NET MAUI as its multiplatform application foundation. The checked-in project currently targets Mac Catalyst; add the required MAUI target frameworks and workloads before building additional platform apps.\n\n## Benchmarks\n\n```bash\ndotnet build benchmarks/Stationary.Ftms.Benchmarks/Stationary.Ftms.Benchmarks.csproj \\\n  -c Release \\\n  --no-restore\n\ndotnet run --project benchmarks/Stationary.Ftms.Benchmarks/Stationary.Ftms.Benchmarks.csproj \\\n  -c Release \\\n  --no-build \\\n  -- --filter '*FtmsCodecBenchmarks*' --join\n```\n\n## Documentation\n\n- [FTMS v1.0.1 reference](docs/ftms/index.md)\n- [Documentation index](docs/index.md)\n",
  "bytes": 3226,
  "sha": "d05e0ccc019abde75651a05ad4301169926c0ec1e4e5086aea4bd37f4adab778",
  "repo_slug": "aalmada/stationary",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_aalmada_stationary_docs_index_md_fe05eadc/readme"
}