# bdelion/design-system-quality-pipeline architecture

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

- Interactive diagram: https://gitdiagram.com/bdelion/design-system-quality-pipeline
- Repository: https://github.com/bdelion/design-system-quality-pipeline
- Video tour (about a minute): https://gitdiagram.com/bdelion/design-system-quality-pipeline/video

## Overview

Design System Quality Pipeline ingests GitHub or fixture data, normalizes it into a domain model, evaluates data quality, computes metrics and snapshot changes, then writes a static dashboard. The primary orchestrator is `src/pipeline.ts`; a separate CLI path supports anonymizing RAW datasets and validating shareable fixtures, including trace and report generation. The graph follows documented workflow and sampled call sites; unsampled dashboard, analytics, and anonymization internals are represented at their documented subsystem paths, with no speculative internal links.

Main entry points: [`src/pipeline.ts`](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/pipeline.ts) (Pipeline runner), [`src/cli.ts`](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/cli.ts) (Command interface), [`src/analytics/metrics.ts`](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/metrics.ts) (Metric definitions), [`src/collectors/github.ts`](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/collectors/github.ts) (GitHub collector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Inputs &amp; configuration"]
  node_config["System config<br/>[config.ts]"]
  node_catalogue["Component catalogue<br/>[catalogue.ts]"]
  node_fixture["Fixture collector<br/>[fixture.ts]"]
  node_github["GitHub collector<br/>[github.ts]"]
end

subgraph group_processing["Quality pipeline"]
  node_pipeline["Pipeline runner<br/>[pipeline.ts]"]
  node_normalizer["Domain normalizer<br/>[github.ts]"]
  node_quality["Data quality rules<br/>[rules.ts]"]
  node_impact["Metric impacts<br/>[metric-impacts.ts]"]
  node_cli["Command interface<br/>[cli.ts]"]
  node_file_io["File utilities<br/>[files.ts]"]
end

subgraph group_insight["Analytics &amp; presentation"]
  node_kpis["KPI calculation<br/>[kpis.ts]"]
  node_metrics["Metric definitions<br/>[metrics.ts]"]
  node_metric_catalog["Metric catalogue<br/>[catalog.ts]"]
  node_flows["Snapshot flows<br/>[flows.ts]"]
  node_snapshot["Snapshot builder<br/>[snapshot.ts]"]
  node_diff["Snapshot comparison<br/>[diff.ts]"]
  node_dashboard["Static dashboard<br/>[generate.ts]"]
  node_current_snapshot["Current snapshot<br/>[snapshot.json]"]
  node_dashboard_files["Dashboard files"]
end

subgraph group_privacy["Fixture privacy"]
  node_anonymizer["Dataset anonymizer<br/>[anonymizer.ts]"]
  node_sanitizer["Text sanitizer<br/>[sanitize.ts]"]
  node_trace["RAW trace manifest<br/>[trace.ts]"]
  node_validator["Fixture validator<br/>[validator.ts]"]
  node_validation_report["Validation report"]
end

node_operator(("CLI user"))
node_github_service["GitHub API"]

node_operator -->|"runs commands"| node_cli
node_cli -->|"runs pipeline"| node_pipeline
node_pipeline -->|"loads settings"| node_config
node_pipeline -->|"loads catalogue"| node_catalogue
node_pipeline -->|"collects fixture"| node_fixture
node_pipeline -->|"collects GitHub"| node_github
node_github -->|"requests data"| node_github_service
node_pipeline -->|"normalizes RAW"| node_normalizer
node_pipeline -->|"evaluates quality"| node_quality
node_quality -->|"assigns impacts"| node_impact
node_pipeline -->|"calculates KPIs"| node_kpis
node_kpis -->|"computes metrics"| node_metrics
node_metrics -->|"checks contracts"| node_metric_catalog
node_metrics -->|"applies impacts"| node_impact
node_pipeline -->|"compares snapshots"| node_diff
node_pipeline -->|"builds snapshot"| node_snapshot
node_pipeline -->|"generates dashboard"| node_dashboard
node_pipeline -->|"writes snapshots"| node_file_io
node_pipeline -->|"stores current"| node_current_snapshot
node_dashboard -->|"writes static pages"| node_dashboard_files
node_pipeline -.->|"computes flows"| node_flows
node_cli -->|"anonymizes RAW"| node_anonymizer
node_anonymizer -->|"sanitizes text"| node_sanitizer
node_cli -->|"writes trace"| node_trace
node_cli -->|"validates fixture"| node_validator
node_validator -->|"checks sensitive text"| node_sanitizer
node_cli -->|"writes report"| node_validation_report
node_validation_report -->|"uses trace"| node_trace

click node_pipeline "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/pipeline.ts"
click node_config "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/config.ts"
click node_catalogue "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/catalogue.ts"
click node_fixture "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/collectors/fixture.ts"
click node_github "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/collectors/github.ts"
click node_normalizer "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/normalizers/github.ts"
click node_quality "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/quality/rules.ts"
click node_impact "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/lib/metric-impacts.ts"
click node_kpis "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/kpis.ts"
click node_metrics "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/metrics.ts"
click node_metric_catalog "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/catalog.ts"
click node_flows "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/flows.ts"
click node_snapshot "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/snapshots/snapshot.ts"
click node_diff "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/snapshots/diff.ts"
click node_dashboard "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/dashboard/generate.ts"
click node_current_snapshot "https://github.com/bdelion/design-system-quality-pipeline/blob/main/data/current/snapshot.json"
click node_dashboard_files "https://github.com/bdelion/design-system-quality-pipeline/tree/main/data/dashboard"
click node_cli "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/cli.ts"
click node_anonymizer "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/anonymizer.ts"
click node_sanitizer "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/sanitize.ts"
click node_trace "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/trace.ts"
click node_validator "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/validator.ts"
click node_validation_report "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/validation-report.ts"
click node_file_io "https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/lib/files.ts"

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_config,node_catalogue,node_fixture,node_github,node_operator toneBlue
class node_pipeline,node_normalizer,node_quality,node_impact,node_cli,node_file_io toneAmber
class node_kpis,node_metrics,node_metric_catalog,node_flows,node_snapshot,node_diff,node_dashboard,node_current_snapshot,node_dashboard_files,node_github_service toneMint
class node_anonymizer,node_sanitizer,node_trace,node_validator,node_validation_report toneRose
```

## Components

### Inputs & configuration

- [System config](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/config.ts): `src/config.ts`
- [Component catalogue](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/catalogue.ts): `src/catalogue.ts`
- [Fixture collector](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/collectors/fixture.ts): `src/collectors/fixture.ts`
- [GitHub collector](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/collectors/github.ts): `src/collectors/github.ts`

### Quality pipeline

- [Pipeline runner](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/pipeline.ts): `src/pipeline.ts`
- [Domain normalizer](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/normalizers/github.ts): `src/normalizers/github.ts`
- [Data quality rules](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/quality/rules.ts): `src/quality/rules.ts`
- [Metric impacts](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/lib/metric-impacts.ts): `src/lib/metric-impacts.ts`
- [Command interface](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/cli.ts): `src/cli.ts`
- [File utilities](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/lib/files.ts): `src/lib/files.ts`

### Analytics & presentation

- [KPI calculation](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/kpis.ts): `src/analytics/kpis.ts`
- [Metric definitions](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/metrics.ts): `src/analytics/metrics.ts`
- [Metric catalogue](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/catalog.ts): `src/analytics/catalog.ts`
- [Snapshot flows](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/analytics/flows.ts): `src/analytics/flows.ts`
- [Snapshot builder](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/snapshots/snapshot.ts): `src/snapshots/snapshot.ts`
- [Snapshot comparison](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/snapshots/diff.ts): `src/snapshots/diff.ts`
- [Static dashboard](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/dashboard/generate.ts): `src/dashboard/generate.ts`
- [Current snapshot](https://github.com/bdelion/design-system-quality-pipeline/blob/main/data/current/snapshot.json): `data/current/snapshot.json`
- [Dashboard files](https://github.com/bdelion/design-system-quality-pipeline/tree/main/data/dashboard): `data/dashboard`

### Fixture privacy

- [Dataset anonymizer](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/anonymizer.ts): `src/anonymization/anonymizer.ts`
- [Text sanitizer](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/sanitize.ts): `src/anonymization/sanitize.ts`
- [RAW trace manifest](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/trace.ts): `src/anonymization/trace.ts`
- [Fixture validator](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/validator.ts): `src/anonymization/validator.ts`
- [Validation report](https://github.com/bdelion/design-system-quality-pipeline/blob/main/src/anonymization/validation-report.ts): `src/anonymization/validation-report.ts`

### Other components

- **CLI user**
- **GitHub API**

## Connections

- CLI user → Command interface: runs commands (evidence: `README.md`)
- Command interface → Pipeline runner: runs pipeline (evidence: `src/cli.ts`)
- Pipeline runner → System config: loads settings (evidence: `src/pipeline.ts`)
- Pipeline runner → Component catalogue: loads catalogue (evidence: `src/pipeline.ts`)
- Pipeline runner → Fixture collector: collects fixture (evidence: `src/pipeline.ts`)
- Pipeline runner → GitHub collector: collects GitHub (evidence: `src/pipeline.ts`)
- GitHub collector → GitHub API: requests data (evidence: `src/collectors/github.ts`)
- Pipeline runner → Domain normalizer: normalizes RAW (evidence: `src/pipeline.ts`)
- Pipeline runner → Data quality rules: evaluates quality (evidence: `src/pipeline.ts`)
- Data quality rules → Metric impacts: assigns impacts (evidence: `src/quality/rules.ts`)
- Pipeline runner → KPI calculation: calculates KPIs (evidence: `src/pipeline.ts`)
- KPI calculation → Metric definitions: computes metrics (evidence: `src/analytics/kpis.ts`)
- Metric definitions → Metric catalogue: checks contracts (evidence: `src/analytics/metrics.ts`)
- Metric definitions → Metric impacts: applies impacts (evidence: `src/analytics/metrics.ts`)
- Pipeline runner → Snapshot comparison: compares snapshots (evidence: `src/pipeline.ts`)
- Pipeline runner → Snapshot builder: builds snapshot (evidence: `src/pipeline.ts`)
- Pipeline runner → Static dashboard: generates dashboard (evidence: `src/pipeline.ts`)
- Pipeline runner → File utilities: writes snapshots (evidence: `src/pipeline.ts`)
- Pipeline runner → Current snapshot: stores current (evidence: `src/pipeline.ts`)
- Static dashboard → Dashboard files: writes static pages (evidence: `README.md`)
- Pipeline runner → Snapshot flows: computes flows (evidence: `src/pipeline.ts`)
- Command interface → Dataset anonymizer: anonymizes RAW (evidence: `src/cli.ts`)
- Dataset anonymizer → Text sanitizer: sanitizes text (evidence: `src/anonymization/anonymizer.ts`)
- Command interface → RAW trace manifest: writes trace (evidence: `src/cli.ts`)
- Command interface → Fixture validator: validates fixture (evidence: `src/cli.ts`)
- Fixture validator → Text sanitizer: checks sensitive text (evidence: `src/anonymization/validator.ts`)
- Command interface → Validation report: writes report (evidence: `src/cli.ts`)
- Validation report → RAW trace manifest: uses trace (evidence: `src/anonymization/validation-report.ts`)
