# lastexitfromnowhere/open-trust-dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/lastexitfromnowhere/open-trust-dashboard
- Repository: https://github.com/lastexitfromnowhere/open-trust-dashboard

## Overview

Open Trust Dashboard is a static, client-side trust and provenance interface. Users choose a dashboard workflow, and app.js handles the interaction and updates the page: verifying file digests and signatures, signing or attesting provenance, managing requests, and exploring trust data. The README describes decentralized registry visualization and auditing; excerpts also show GitHub-backed signature lookup and issue-based attestation. The source is partial, so uncertain endpoint wiring for requests and exploration is not shown.

Main entry points: [`app.js`](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js) (UI controller), [`index.html`](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/index.html) (Dashboard page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Dashboard interface"]
  node_page["Dashboard page<br/>[index.html]"]
  node_controller["UI controller<br/>[app.js]"]
end

subgraph group_trust["Trust workflows"]
  node_verify["Verify data<br/>[app.js]"]
  node_sign["Sign data<br/>[app.js]"]
  node_attest["Create attestation<br/>[app.js]"]
  node_requests["Attestation requests<br/>[app.js]"]
end

subgraph group_discovery["Discovery"]
  node_explore["Explore trust data<br/>[app.js]"]
  node_fingerprint["Fingerprint details<br/>[app.js]"]
end

subgraph group_integrations["External integrations"]
  node_github["GitHub APIs"]
  node_registry[("Open Trust Registry")]
  node_webcrypto["Browser WebCrypto"]
end

node_user(("User"))

node_user -->|"uses"| node_page
node_page -->|"dispatches events"| node_controller
node_controller -->|"updates UI"| node_page
node_controller -->|"dispatches"| node_verify
node_controller -->|"dispatches"| node_sign
node_controller -->|"dispatches"| node_attest
node_controller -->|"dispatches"| node_requests
node_controller -->|"dispatches"| node_explore
node_explore -->|"opens details"| node_fingerprint
node_verify -->|"digests and verifies"| node_webcrypto
node_sign -->|"uses cryptography"| node_webcrypto
node_attest -->|"fetches issue data"| node_github
node_attest -->|"posts comment"| node_github
node_verify -->|"fetches signature"| node_github
node_explore -.->|"visualizes trust data"| node_registry

click node_page "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/index.html"
click node_controller "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_verify "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_sign "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_attest "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_requests "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_explore "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"
click node_fingerprint "https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js"

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_page,node_controller,node_user toneBlue
class node_verify,node_sign,node_attest,node_requests toneAmber
class node_explore,node_fingerprint toneMint
class node_github,node_registry,node_webcrypto toneRose
```

## Components

### Dashboard interface

- [Dashboard page](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/index.html): `index.html`
- [UI controller](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`

### Trust workflows

- [Verify data](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`
- [Sign data](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`
- [Create attestation](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`
- [Attestation requests](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`

### Discovery

- [Explore trust data](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`
- [Fingerprint details](https://github.com/lastexitfromnowhere/open-trust-dashboard/blob/main/app.js): `app.js`

### External integrations

- **GitHub APIs**
- **Open Trust Registry**
- **Browser WebCrypto**

### Other components

- **User**

## Connections

- User → Dashboard page: uses
- Dashboard page → UI controller: dispatches events
- UI controller → Dashboard page: updates UI
- UI controller → Verify data: dispatches
- UI controller → Sign data: dispatches
- UI controller → Create attestation: dispatches
- UI controller → Attestation requests: dispatches
- UI controller → Explore trust data: dispatches
- Explore trust data → Fingerprint details: opens details
- Verify data → Browser WebCrypto: digests and verifies
- Sign data → Browser WebCrypto: uses cryptography
- Create attestation → GitHub APIs: fetches issue data
- Create attestation → GitHub APIs: posts comment
- Verify data → GitHub APIs: fetches signature
- Explore trust data → Open Trust Registry: visualizes trust data
