# everrisedeveloper/dashboard-bridge architecture

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

- Interactive diagram: https://gitdiagram.com/everrisedeveloper/dashboard-bridge
- Repository: https://github.com/everrisedeveloper/dashboard-bridge

## Overview

Everrise Dashboard Config Bridge is a Home Assistant integration that serves the dashboard’s configuration through authenticated APIs instead of exposing it as a public static file. Its main workflow is dashboard client → authenticated config API → private on-disk config; writes are admin-only. The integration also registers the native dashboard panel and landing-page preference, supports client automation management and notification history, and provides update and Tailscale onboarding features. The graph reflects README capabilities and sampled source; links for unsampled subsystems are limited to documented wiring.

Main entry points: [`custom_components/everrise_dashboard/__init__.py`](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/__init__.py) (Integration setup), [`custom_components/everrise_dashboard/update_manager.py`](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_manager.py) (Update manager), [`custom_components/everrise_dashboard/automations_http.py`](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automations_http.py) (Automation API), [`custom_components/everrise_dashboard/notifications_http.py`](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_http.py) (Notifications API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Integration setup"]
  node_init["Integration setup<br/>[__init__.py]"]
  node_config_flow["Setup flow<br/>[config_flow.py]"]
  node_panel["Dashboard panel<br/>[default_panel.py]"]
end

subgraph group_config["Config and automations"]
  node_config_api["Config API<br/>[http.py]"]
  node_config_storage[("Config storage<br/>[storage.py]")]
  node_automation_api["Automation API"]
  node_automation_policy["Automation policy"]
  node_automation_store["Automation storage"]
  node_automation_file[("Automation YAML")]
end

subgraph group_features["Dashboard features"]
  node_notifications_api["Notifications API"]
  node_notifications_store[("Notification history")]
  node_notification_service["Notification service"]
  node_tailscale_api["Tailscale API<br/>[tailscale_http.py]"]
  node_tailscale["Tailscale supervisor"]
end

subgraph group_updates["Updates"]
  node_native_updates["Native update entity<br/>[update.py]"]
  node_update_api["Dashboard update API<br/>[update_http.py]"]
  node_update_manager["Update manager<br/>[update_manager.py]"]
  node_frontend_installer["Frontend installer"]
  node_update_consent[("Update consent<br/>[update_consent.py]")]
end

node_dashboard(("Dashboard client"))
node_ha_user(("Home Assistant user"))
node_ha["Home Assistant"]
node_supervisor["HA Supervisor"]
node_github["GitHub"]

node_ha_user -->|"configures"| node_config_flow
node_config_flow -->|"sets up"| node_init
node_init -->|"seeds config"| node_config_storage
node_init -->|"registers panel"| node_panel
node_init -->|"registers routes"| node_automation_api
node_init -->|"registers routes"| node_notifications_api
node_init -->|"registers routes"| node_tailscale_api
node_init -->|"registers routes"| node_update_api
node_dashboard -->|"requests config"| node_config_api
node_config_api -->|"reads or writes"| node_config_storage
node_dashboard -->|"manages automations"| node_automation_api
node_automation_api -->|"validates changes"| node_automation_policy
node_automation_api -->|"loads or saves"| node_automation_store
node_automation_store -->|"reads or writes"| node_automation_file
node_dashboard -->|"reads history"| node_notifications_api
node_notifications_api -->|"queries records"| node_notifications_store
node_automation_policy -->|"allows services"| node_ha
node_ha -->|"dispatches service"| node_notification_service
node_notification_service -->|"records notification"| node_notifications_store
node_dashboard -->|"requests onboarding"| node_tailscale_api
node_tailscale_api -->|"checks or triggers"| node_tailscale
node_tailscale -->|"calls internal API"| node_supervisor
node_ha_user -->|"checks or installs"| node_update_api
node_update_api -->|"runs update action"| node_update_manager
node_update_manager -->|"reads consent"| node_update_consent
node_update_manager -->|"installs build"| node_frontend_installer
node_update_manager -.->|"checks releases"| node_github
node_native_updates -.->|"checks version"| node_github
node_native_updates -->|"installs build"| node_frontend_installer
node_ha -->|"loads integration"| node_init

click node_init "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/__init__.py"
click node_config_flow "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/config_flow.py"
click node_panel "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/default_panel.py"
click node_config_api "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/http.py"
click node_config_storage "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/storage.py"
click node_automation_api "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automations_http.py"
click node_automation_policy "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automation_policy.py"
click node_automation_store "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automations_store.py"
click node_notifications_api "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_http.py"
click node_notifications_store "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_store.py"
click node_notification_service "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_store.py"
click node_tailscale_api "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/tailscale_http.py"
click node_tailscale "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/tailscale_supervisor.py"
click node_native_updates "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update.py"
click node_update_api "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_http.py"
click node_update_manager "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_manager.py"
click node_frontend_installer "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/frontend_updater.py"
click node_update_consent "https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_consent.py"

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_init,node_config_flow,node_panel,node_dashboard,node_ha_user toneBlue
class node_config_api,node_config_storage,node_automation_api,node_automation_policy,node_automation_store,node_automation_file toneAmber
class node_notifications_api,node_notifications_store,node_notification_service,node_tailscale_api,node_tailscale toneMint
class node_native_updates,node_update_api,node_update_manager,node_frontend_installer,node_update_consent toneRose
class node_ha,node_supervisor,node_github toneIndigo
```

## Components

### Integration setup

- [Integration setup](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/__init__.py): `custom_components/everrise_dashboard/__init__.py`
- [Setup flow](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/config_flow.py): `custom_components/everrise_dashboard/config_flow.py`
- [Dashboard panel](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/default_panel.py): `custom_components/everrise_dashboard/default_panel.py`

### Config and automations

- [Config API](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/http.py): `custom_components/everrise_dashboard/http.py`
- [Config storage](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/storage.py): `custom_components/everrise_dashboard/storage.py`
- [Automation API](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automations_http.py): `custom_components/everrise_dashboard/automations_http.py`
- [Automation policy](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automation_policy.py): `custom_components/everrise_dashboard/automation_policy.py`
- [Automation storage](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/automations_store.py): `custom_components/everrise_dashboard/automations_store.py`
- **Automation YAML**

### Dashboard features

- [Notifications API](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_http.py): `custom_components/everrise_dashboard/notifications_http.py`
- [Notification history](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_store.py): `custom_components/everrise_dashboard/notifications_store.py`
- [Notification service](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/notifications_store.py): `custom_components/everrise_dashboard/notifications_store.py`
- [Tailscale API](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/tailscale_http.py): `custom_components/everrise_dashboard/tailscale_http.py`
- [Tailscale supervisor](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/tailscale_supervisor.py): `custom_components/everrise_dashboard/tailscale_supervisor.py`

### Updates

- [Native update entity](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update.py): `custom_components/everrise_dashboard/update.py`
- [Dashboard update API](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_http.py): `custom_components/everrise_dashboard/update_http.py`
- [Update manager](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_manager.py): `custom_components/everrise_dashboard/update_manager.py`
- [Frontend installer](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/frontend_updater.py): `custom_components/everrise_dashboard/frontend_updater.py`
- [Update consent](https://github.com/everrisedeveloper/dashboard-bridge/blob/main/custom_components/everrise_dashboard/update_consent.py): `custom_components/everrise_dashboard/update_consent.py`

### Other components

- **Dashboard client**
- **Home Assistant user**
- **Home Assistant**
- **HA Supervisor**
- **GitHub**

## Connections

- Home Assistant user → Setup flow: configures
- Setup flow → Integration setup: sets up
- Integration setup → Config storage: seeds config
- Integration setup → Dashboard panel: registers panel
- Integration setup → Automation API: registers routes
- Integration setup → Notifications API: registers routes
- Integration setup → Tailscale API: registers routes
- Integration setup → Dashboard update API: registers routes
- Dashboard client → Config API: requests config
- Config API → Config storage: reads or writes
- Dashboard client → Automation API: manages automations
- Automation API → Automation policy: validates changes
- Automation API → Automation storage: loads or saves
- Automation storage → Automation YAML: reads or writes
- Dashboard client → Notifications API: reads history
- Notifications API → Notification history: queries records
- Automation policy → Home Assistant: allows services
- Home Assistant → Notification service: dispatches service
- Notification service → Notification history: records notification
- Dashboard client → Tailscale API: requests onboarding
- Tailscale API → Tailscale supervisor: checks or triggers
- Tailscale supervisor → HA Supervisor: calls internal API
- Home Assistant user → Dashboard update API: checks or installs
- Dashboard update API → Update manager: runs update action
- Update manager → Update consent: reads consent
- Update manager → Frontend installer: installs build
- Update manager → GitHub: checks releases
- Native update entity → GitHub: checks version
- Native update entity → Frontend installer: installs build
- Home Assistant → Integration setup: loads integration
