# veggiemonk/awesome-docker architecture

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

- Interactive diagram: https://gitdiagram.com/veggiemonk/awesome-docker
- Repository: https://github.com/veggiemonk/awesome-docker

## Overview

Awesome Docker is both a curated Markdown directory of Docker-related projects and a Go CLI for maintaining and checking that list. The main workflow parses README entries, checks project links and GitHub repository health, scores results, and saves cache/report data; separate commands lint or edit the list, prune unhealthy entries, browse health data, and build the website. The graph follows the sampled CLI and package code; some command internals were omitted, so uncertain wiring is left out.

Main entry points: [`cmd/awesome-docker/main.go`](https://github.com/veggiemonk/awesome-docker/blob/master/cmd/awesome-docker/main.go) (CLI Commands), [`internal/builder/builder.go`](https://github.com/veggiemonk/awesome-docker/blob/master/internal/builder/builder.go) (Site Builder), [`README.md`](https://github.com/veggiemonk/awesome-docker/blob/master/README.md) (Curated README), [`internal/linter/fixer.go`](https://github.com/veggiemonk/awesome-docker/blob/master/internal/linter/fixer.go) (Entry Fixer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI Workflows"]
  node_cli["CLI Commands<br/>[main.go]"]
end

subgraph group_readme["List Maintenance"]
  node_readme_doc["Curated README<br/>[README.md]"]
  node_parser["Markdown Parser<br/>[parser.go]"]
  node_linter["List Linter<br/>[linter.go]"]
  node_fixer["Entry Fixer<br/>[fixer.go]"]
  node_pruner["Health Pruner<br/>[pruner.go]"]
end

subgraph group_health["Health Checks"]
  node_checker["Link Checker<br/>[http.go]"]
  node_github_checker["GitHub Checker<br/>[github.go]"]
  node_scorer["Health Scorer<br/>[scorer.go]"]
  node_cache_code["Cache Access<br/>[cache.go]"]
  node_health_cache[("Health Cache<br/>[health_cache.yaml]")]
  node_tui["Health Browser<br/>[tui.go]"]
end

subgraph group_outputs["Reports and Website"]
  node_report["Health Report<br/>[scorer.go]"]
  node_builder["Site Builder<br/>[builder.go]"]
  node_site_template["Website Template<br/>[website.tmpl.html]"]
  node_site_output["Generated Website<br/>[index.html]"]
end

node_maintainer(("Maintainer"))
node_github{{"GitHub API"}}
node_websites{{"Project Websites"}}

node_maintainer -->|"runs"| node_cli
node_cli -->|"reads"| node_readme_doc
node_cli -->|"parses"| node_parser
node_cli -->|"validates"| node_linter
node_cli -->|"fixes or sorts"| node_fixer
node_linter -->|"parses entries"| node_parser
node_fixer -->|"parses entries"| node_parser
node_fixer -->|"rewrites"| node_readme_doc
node_cli -->|"checks links"| node_checker
node_checker -->|"requests URLs"| node_websites
node_cli -->|"checks repositories"| node_github_checker
node_github_checker -->|"queries"| node_github
node_cli -->|"scores health"| node_scorer
node_cli -->|"loads and saves"| node_cache_code
node_cache_code -->|"reads and writes"| node_health_cache
node_cli -->|"opens browser"| node_tui
node_cli -->|"prunes entries"| node_pruner
node_pruner -->|"removes entries"| node_readme_doc
node_pruner -->|"removes cache entries"| node_health_cache
node_cli -->|"generates"| node_report
node_cli -->|"builds site"| node_builder
node_builder -->|"converts Markdown"| node_readme_doc
node_builder -->|"fills template"| node_site_template
node_builder -->|"writes HTML"| node_site_output

click node_cli "https://github.com/veggiemonk/awesome-docker/blob/master/cmd/awesome-docker/main.go"
click node_readme_doc "https://github.com/veggiemonk/awesome-docker/blob/master/README.md"
click node_parser "https://github.com/veggiemonk/awesome-docker/blob/master/internal/parser/parser.go"
click node_linter "https://github.com/veggiemonk/awesome-docker/blob/master/internal/linter/linter.go"
click node_fixer "https://github.com/veggiemonk/awesome-docker/blob/master/internal/linter/fixer.go"
click node_pruner "https://github.com/veggiemonk/awesome-docker/blob/master/internal/pruner/pruner.go"
click node_checker "https://github.com/veggiemonk/awesome-docker/blob/master/internal/checker/http.go"
click node_github_checker "https://github.com/veggiemonk/awesome-docker/blob/master/internal/checker/github.go"
click node_scorer "https://github.com/veggiemonk/awesome-docker/blob/master/internal/scorer/scorer.go"
click node_cache_code "https://github.com/veggiemonk/awesome-docker/blob/master/internal/cache/cache.go"
click node_health_cache "https://github.com/veggiemonk/awesome-docker/blob/master/config/health_cache.yaml"
click node_tui "https://github.com/veggiemonk/awesome-docker/blob/master/internal/tui/tui.go"
click node_report "https://github.com/veggiemonk/awesome-docker/blob/master/internal/scorer/scorer.go"
click node_builder "https://github.com/veggiemonk/awesome-docker/blob/master/internal/builder/builder.go"
click node_site_template "https://github.com/veggiemonk/awesome-docker/blob/master/config/website.tmpl.html"
click node_site_output "https://github.com/veggiemonk/awesome-docker/blob/master/index.html"

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_cli toneBlue
class node_readme_doc,node_parser,node_linter,node_fixer,node_pruner toneAmber
class node_checker,node_github_checker,node_scorer,node_cache_code,node_health_cache,node_tui,node_github toneMint
class node_report,node_builder,node_site_template,node_site_output toneRose
class node_maintainer,node_websites toneIndigo
```

## Components

### CLI Workflows

- [CLI Commands](https://github.com/veggiemonk/awesome-docker/blob/master/cmd/awesome-docker/main.go): `cmd/awesome-docker/main.go`

### List Maintenance

- [Curated README](https://github.com/veggiemonk/awesome-docker/blob/master/README.md): `README.md`
- [Markdown Parser](https://github.com/veggiemonk/awesome-docker/blob/master/internal/parser/parser.go): `internal/parser/parser.go`
- [List Linter](https://github.com/veggiemonk/awesome-docker/blob/master/internal/linter/linter.go): `internal/linter/linter.go`
- [Entry Fixer](https://github.com/veggiemonk/awesome-docker/blob/master/internal/linter/fixer.go): `internal/linter/fixer.go`
- [Health Pruner](https://github.com/veggiemonk/awesome-docker/blob/master/internal/pruner/pruner.go): `internal/pruner/pruner.go`

### Health Checks

- [Link Checker](https://github.com/veggiemonk/awesome-docker/blob/master/internal/checker/http.go): `internal/checker/http.go`
- [GitHub Checker](https://github.com/veggiemonk/awesome-docker/blob/master/internal/checker/github.go): `internal/checker/github.go`
- [Health Scorer](https://github.com/veggiemonk/awesome-docker/blob/master/internal/scorer/scorer.go): `internal/scorer/scorer.go`
- [Cache Access](https://github.com/veggiemonk/awesome-docker/blob/master/internal/cache/cache.go): `internal/cache/cache.go`
- [Health Cache](https://github.com/veggiemonk/awesome-docker/blob/master/config/health_cache.yaml): `config/health_cache.yaml`
- [Health Browser](https://github.com/veggiemonk/awesome-docker/blob/master/internal/tui/tui.go): `internal/tui/tui.go`

### Reports and Website

- [Health Report](https://github.com/veggiemonk/awesome-docker/blob/master/internal/scorer/scorer.go): `internal/scorer/scorer.go`
- [Site Builder](https://github.com/veggiemonk/awesome-docker/blob/master/internal/builder/builder.go): `internal/builder/builder.go`
- [Website Template](https://github.com/veggiemonk/awesome-docker/blob/master/config/website.tmpl.html): `config/website.tmpl.html`
- [Generated Website](https://github.com/veggiemonk/awesome-docker/blob/master/index.html): `index.html`

### Other components

- **Maintainer**
- **GitHub API**
- **Project Websites**

## Connections

- Maintainer → CLI Commands: runs
- CLI Commands → Curated README: reads
- CLI Commands → Markdown Parser: parses
- CLI Commands → List Linter: validates
- CLI Commands → Entry Fixer: fixes or sorts
- List Linter → Markdown Parser: parses entries
- Entry Fixer → Markdown Parser: parses entries
- Entry Fixer → Curated README: rewrites
- CLI Commands → Link Checker: checks links
- Link Checker → Project Websites: requests URLs
- CLI Commands → GitHub Checker: checks repositories
- GitHub Checker → GitHub API: queries
- CLI Commands → Health Scorer: scores health
- CLI Commands → Cache Access: loads and saves
- Cache Access → Health Cache: reads and writes
- CLI Commands → Health Browser: opens browser
- CLI Commands → Health Pruner: prunes entries
- Health Pruner → Curated README: removes entries
- Health Pruner → Health Cache: removes cache entries
- CLI Commands → Health Report: generates
- CLI Commands → Site Builder: builds site
- Site Builder → Curated README: converts Markdown
- Site Builder → Website Template: fills template
- Site Builder → Generated Website: writes HTML
