# protocentral/healthypi_studio architecture

> Architecture diagram of the GitHub repository protocentral/healthypi_studio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/protocentral/healthypi_studio
- Repository: https://github.com/protocentral/healthypi_studio

## Overview

HealthyPi Studio is a cross-platform desktop workstation for HealthyPi 6. Users connect over USB or Wi-Fi (or choose generated demo data/open a recording), inspect live biosignals, optionally apply display filters, record raw samples, and export recordings. The product also covers EEG analysis, device health, link status, settings, and signed firmware updates. The graph preserves these documented capabilities; most Dart implementation files were not sampled, so edges describe only README-documented relationships rather than inferred internal calls.

Main entry points: [`lib/screens/studio/live_screen.dart`](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/live_screen.dart) (Live signals), [`lib/services/ble_service.dart`](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/ble_service.dart) (USB and Wi-Fi), [`lib/screens/studio/connect_screen.dart`](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/connect_screen.dart) (Connect), [`lib/screens/studio/recordings_screen.dart`](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/recordings_screen.dart) (Recordings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Studio experience"]
  node_desktop["Desktop host<br/>[main.dart]"]
  node_connect["Connect"]
  node_live["Live signals<br/>[live_screen.dart]"]
  node_eeg_screen["EEG screen<br/>[eeg_screen.dart]"]
  node_filters_screen["Filters screen"]
  node_device_screen["Device screen<br/>[device_screen.dart]"]
  node_health_screen["Link health"]
  node_recordings_screen["Recordings"]
end

subgraph group_streaming["Device streaming"]
  node_ble["USB and Wi-Fi<br/>[ble_service.dart]"]
  node_parser["DBLK parser<br/>[data_parser.dart]"]
  node_live_pump["Live data pump"]
  node_firmware["Firmware update"]
end

subgraph group_analysis["Signal analysis"]
  node_eeg_analysis["EEG analysis"]
  node_filtering["Display filters"]
end

subgraph group_recordings["Recording and export"]
  node_recorder["Recording engine"]
  node_hpd["HPD files"]
  node_export["CSV export<br/>[csv_exporter.dart]"]
end

node_operator(("Studio user"))
node_device(("HealthyPi 6"))

node_operator -->|"launches"| node_desktop
node_desktop -->|"opens"| node_connect
node_connect -->|"connects via"| node_ble
node_ble -->|"streams from"| node_device
node_connect -->|"starts live view"| node_live
node_live -->|"decodes DBLK"| node_parser
node_parser -.->|"feeds samples"| node_live_pump
node_live -->|"records samples"| node_recorder
node_recorder -->|"writes HPD"| node_hpd
node_recordings_screen -->|"opens recordings"| node_hpd
node_recordings_screen -->|"exports CSV"| node_export
node_live -->|"shows EEG"| node_eeg_screen
node_eeg_screen -->|"shows band power"| node_eeg_analysis
node_live -->|"configures filters"| node_filters_screen
node_filters_screen -->|"previews filtered data"| node_filtering
node_device_screen -->|"updates firmware"| node_firmware
node_firmware -->|"uses USB SMP"| node_ble
node_health_screen -.->|"reports link"| node_ble

click node_desktop "https://github.com/protocentral/healthypi_studio/blob/main/lib/main.dart"
click node_connect "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/connect_screen.dart"
click node_live "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/live_screen.dart"
click node_eeg_screen "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/eeg_screen.dart"
click node_filters_screen "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/filters_screen.dart"
click node_device_screen "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/device_screen.dart"
click node_health_screen "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/link_health_screen.dart"
click node_ble "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/ble_service.dart"
click node_parser "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/data_parser.dart"
click node_live_pump "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/live_data_pump.dart"
click node_eeg_analysis "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/eeg_band_power_service.dart"
click node_filtering "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/filter_integration_service.dart"
click node_recorder "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/recording_engine.dart"
click node_hpd "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/biosignal_file_writer.dart"
click node_recordings_screen "https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/recordings_screen.dart"
click node_export "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/csv_exporter.dart"
click node_firmware "https://github.com/protocentral/healthypi_studio/blob/main/lib/services/firmware_update_service.dart"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop,node_connect,node_live,node_eeg_screen,node_filters_screen,node_device_screen,node_health_screen,node_recordings_screen,node_operator toneBlue
class node_ble,node_parser,node_live_pump,node_firmware toneAmber
class node_eeg_analysis,node_filtering toneMint
class node_recorder,node_hpd,node_export toneRose
class node_device toneIndigo
```

## Components

### Studio experience

- [Desktop host](https://github.com/protocentral/healthypi_studio/blob/main/lib/main.dart): `lib/main.dart`
- [Connect](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/connect_screen.dart): `lib/screens/studio/connect_screen.dart`
- [Live signals](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/live_screen.dart): `lib/screens/studio/live_screen.dart`
- [EEG screen](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/eeg_screen.dart): `lib/screens/studio/eeg_screen.dart`
- [Filters screen](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/filters_screen.dart): `lib/screens/studio/filters_screen.dart`
- [Device screen](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/device_screen.dart): `lib/screens/studio/device_screen.dart`
- [Link health](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/link_health_screen.dart): `lib/screens/studio/link_health_screen.dart`
- [Recordings](https://github.com/protocentral/healthypi_studio/blob/main/lib/screens/studio/recordings_screen.dart): `lib/screens/studio/recordings_screen.dart`

### Device streaming

- [USB and Wi-Fi](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/ble_service.dart): `lib/services/ble_service.dart`
- [DBLK parser](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/data_parser.dart): `lib/services/data_parser.dart`
- [Live data pump](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/live_data_pump.dart): `lib/services/live_data_pump.dart`
- [Firmware update](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/firmware_update_service.dart): `lib/services/firmware_update_service.dart`

### Signal analysis

- [EEG analysis](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/eeg_band_power_service.dart): `lib/services/eeg_band_power_service.dart`
- [Display filters](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/filter_integration_service.dart): `lib/services/filter_integration_service.dart`

### Recording and export

- [Recording engine](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/recording_engine.dart): `lib/services/recording_engine.dart`
- [HPD files](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/biosignal_file_writer.dart): `lib/services/biosignal_file_writer.dart`
- [CSV export](https://github.com/protocentral/healthypi_studio/blob/main/lib/services/csv_exporter.dart): `lib/services/csv_exporter.dart`

### Other components

- **Studio user**
- **HealthyPi 6**

## Connections

- Studio user → Desktop host: launches (evidence: `README.md`)
- Desktop host → Connect: opens (evidence: `README.md`)
- Connect → USB and Wi-Fi: connects via (evidence: `README.md`)
- USB and Wi-Fi → HealthyPi 6: streams from (evidence: `README.md`)
- Connect → Live signals: starts live view (evidence: `README.md`)
- Live signals → DBLK parser: decodes DBLK (evidence: `README.md`)
- DBLK parser → Live data pump: feeds samples
- Live signals → Recording engine: records samples (evidence: `README.md`)
- Recording engine → HPD files: writes HPD (evidence: `README.md`)
- Recordings → HPD files: opens recordings (evidence: `README.md`)
- Recordings → CSV export: exports CSV (evidence: `README.md`)
- Live signals → EEG screen: shows EEG (evidence: `README.md`)
- EEG screen → EEG analysis: shows band power (evidence: `README.md`)
- Live signals → Filters screen: configures filters (evidence: `README.md`)
- Filters screen → Display filters: previews filtered data (evidence: `README.md`)
- Device screen → Firmware update: updates firmware (evidence: `README.md`)
- Firmware update → USB and Wi-Fi: uses USB SMP (evidence: `README.md`)
- Link health → USB and Wi-Fi: reports link
