Documentation

Documentation

Practical guides, quick references, and implementation standards for applying Harmonic Design in real projects.


Getting Started

1

What Harmonic Design is, why it exists, and who it helps. Start with the conceptual foundation before reaching for the tools.

2

VBD, EBD, BDT, and Project Design – each a complete methodology, each structurally isomorphic with the others.

3
Apply to a real project

Follow the four-phase checklist below. Begin with volatility analysis, then decompose experience, map your tests, and derive your plan.

Applying HD to a Project

Phase 1 — VBD
Volatility Analysis

Before writing any structure, identify where change is concentrated.

  • What changes most often? (business rules, UI interactions, schema)
  • What almost never changes? (orchestration sequence, core algorithms)
  • What crosses a system boundary? (filesystem, network, database, subprocess)

Draw the boundary map: Managers orchestrate, Engines execute, Resource Accessors isolate I/O, Utilities handle cross-cutting concerns.

Phase 2 — EBD
Experience Decomposition

Identify core user journeys and decompose each into three structural levels.

  • Experience — the complete journey (e.g., “Onboard a new user”)
  • Flows — goal-directed sequences within it (e.g., “Collect user info”)
  • Interactions — the atomic inputs (e.g., text fields, dropdowns, toggles)
Phase 3 — BDT
Test Strategy

Map the test spiral to your component boundaries.

  • Unit tests — Engines and Flows; mock at the boundary
  • Integration tests — Manager → Engine seams, Engine → Accessor seams
  • E2E tests — Complete user journeys, full stack
Phase 4 — PD
Project Plan

Derive the project plan directly from the architecture.

  • Each component → work package
  • Each dependency → precedence relationship
  • Critical path → project duration
  • Float distribution → risk profile

Quick Reference

Communication Rules

The universal rule: state flows downward, results propagate upward, horizontal coordination is prohibited.
Call PatternAllowed?Notes
Manager → EngineSynchronous invocation
Manager → AccessorFor reads or state persistence
Manager → Manager✓ (async only)Fire-and-forget via event bus
Engine → AccessorFor reference data or persistence
Engine → EngineManager composes instead
Accessor → AccessorManager fetches from both
Engine → ManagerUpward call forbidden
Accessor → EngineUpward call forbidden

Component Directory Structure

managers/
├── order_manager/
│   ├── i_order_manager.py      # Interface (contract)
│   ├── order_manager.py        # Implementation
│   └── _helpers.py             # Private helpers
engines/
├── pricing_engine/
│   ├── i_pricing_engine.py
│   └── pricing_engine.py
accessors/
├── inventory_accessor/
│   ├── i_inventory_accessor.py
│   └── inventory_accessor.py
utilities/
└── logging/
    └── logger.py

Every component gets its own subdirectory. Interface and implementation can live together – start simple and separate as deployment needs evolve. Components can have private helpers without polluting the tier namespace.

Full documentation including stack-specific implementation guides (Python, Java, TypeScript, .NET, Go), project structure templates, and worked examples is in development. Get in touch if you need implementation support now.
Stay in the loop.