High-Level System Architecture
This document shows the layered architecture of DocBuilder, illustrating how different components interact across layers.
Last Updated: January 4, 2026 - Reflects current package structure.
Layer View
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β COMMAND LAYER β
β (cmd/docbuilder/commands/) β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββββββ β
β β Build β β Daemon β β Preview β β Discover β β
β β (Kong) β β (Watch) β β (Live) β β (Analysis) β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββ¬ββββββββββ β
β β β β β β
βββββββββΌββββββββββββββΌββββββββββββββΌββββββββββββββββββΌβββββββββββββ
β β β β
βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ
β SERVICE LAYER β
β (internal/build, internal/daemon) β
β β
β ββββββββββββββββββ βββββββββββββββββββ ββββββββββββββββββββ β
β β BuildService β β DaemonService β β DiscoveryService β β
β β β β β β β β
β β - Run() β β - Start() β β - Discover() β β
β β - Validate() β β - Stop() β β - Report() β β
β ββββββββββ¬ββββββββ ββββββββββ¬βββββββββ ββββββββββ¬ββββββββββ β
β β β β β
βββββββββββββΌββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββ
β β β
βββββββββββββββββββββ΄βββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β PROCESSING LAYER β
β (internal/hugo, internal/docs, internal/hugo/pipeline) β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hugo Generator β β
β β β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β β
β β β Pipeline β β Relearn β β Report Builder β β β
β β β Processor β β Config β β β β β
β β ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββββββ¬βββββββββββ β β
β βββββββββββΌββββββββββββββββΌββββββββββββββββββββΌβββββββββββββββββ β
β β β β β
β βββββββββββΌββββββββββββββββΌββββββββββββββββββββΌβββββββββββββββ β
β β Fixed Transform Pipeline β β
β β (internal/hugo/pipeline/) β β
β β β β
β β 1. parseFrontMatter - Extract YAML β β
β β 2. normalizeIndexFiles - README β _index β β
β β 3. buildBaseFrontMatter - Add defaults β β
β β 4. extractIndexTitle - H1 extraction β β
β β 5. stripHeading - Remove H1 β β
β β 6. escapeShortcodesInCodeBlocks - Escape {{ }} in ``` β β
β β 7. rewriteRelativeLinks - Fix .md links β β
β β 8. rewriteImageLinks - Fix image paths β β
β β 9. generateFromKeywords - Create from @keywordsβ β
β β 10. addRepositoryMetadata - Inject repo info β β
β β 11. addEditLink - Generate editURL β β
β β 12. serializeDocument - Output YAML + contentβ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ
β DOMAIN LAYER β
β (internal/config, internal/state, internal/docs) β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββββββ β
β β Config β β State β β DocFile β β Repository β β
β β β β β β β β β β
β β - Hugo β β - Git β β - Path β β - URL β β
β β - Build β β - Docs β β - Trans β β - Branch β β
β β - Forge β β - Build β β forms β β - Auth β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββ¬ββββββββββ β
βββββββββΌββββββββββββββΌββββββββββββββΌββββββββββββββββββΌβββββββββββββ
β β β β
βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ
β INFRASTRUCTURE LAYER β
β (internal/git, internal/forge, internal/workspace) β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββββββββ β
β β Git β β Forge β β Event β β Workspace β β
β β Client β β Clients β β Store β β Manager β β
β β β β β β β β β β
β β - Clone β β - GitHub β β - Append β β - Create() β β
β β - Update β β - GitLab β β - Query β β - Cleanup() β β
β β - Auth β β - Forgejoβ β β β β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββ¬βββββββββ β
β β β β β β
β βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β Foundation β β
β β Errors β β
β β β β
β β - ClassifiedErr β β
β β - Categories β β
β β - Retry Logic β β
β βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer Responsibilities
Command Layer
- Purpose: User interface and CLI command handling
- Components: Build, Daemon, Preview, Discover commands
- Dependencies: Service layer only
- Example:
cmd/docbuilder/commands/build.go parses CLI flags and delegates to BuildService
Service Layer
- Purpose: Business logic orchestration and workflow management
- Components: BuildService, DaemonService, DiscoveryService
- Dependencies: Processing and domain layers
- Example:
internal/build/default_service.go orchestrates the build pipeline
Processing Layer
- Purpose: Content transformation and Hugo site generation
- Components: Hugo Generator, Pipeline Processor, Relearn Configuration
- Dependencies: Domain and infrastructure layers
- Key Feature: Fixed 12-step transform pipeline (ADR-003)
Domain Layer
- Purpose: Core business entities and rules
- Components: Config, State, DocFile, Repository models
- Dependencies: Foundation layer only
- Characteristic: Pure domain logic, no infrastructure concerns
Infrastructure Layer
- Purpose: External system integration
- Components: Git client, Forge clients, Event store, Workspace management
- Dependencies: Foundation layer only
- Example:
internal/git/git.go handles repository cloning with authentication
Foundation Layer
- Purpose: Cross-cutting concerns and shared utilities
- Components: Unified error handling, logging fields, metrics
- Dependencies: None (leaf layer)
- Key Package:
internal/foundation/errors provides classified error system
Key Design Principles
- Dependency Rule: Dependencies flow downward only; upper layers depend on lower layers, never the reverse
- Single Responsibility: Each layer has a distinct, well-defined purpose
- Testability: Lower layers (domain, infrastructure) are easily testable in isolation
- Error Propagation: All errors use
internal/foundation/errors for consistent classification and context
References
permalink[high-level-system-architecture](https://docs.home.luguber.info/_uid/663991b1-bfe7-4c55-bd54-8f09e1120e06/)