Blueprint is a configuration generator written in Go.
Its purpose is to define configuration once, in a structured and type-safe way, and generate concrete config files for multiple targets (formats, environments, machines) in a repeatable and auditable manner.
This project is currently unstarted. This README describes the intended scope, design constraints, and direction.
Configuration sprawl typically results in:
- Duplicated config files across environments
- Drift between “almost identical” configs
- Ad-hoc templating with weak validation
- Runtime errors caused by malformed or partial configs
Blueprint aims to treat configuration as compiled output, not hand-written artifacts.
- Single source of truth
- Deterministic output
- Static validation
- Minimal magic
- Explicit over implicit
Blueprint should feel closer to a compiler than a template engine.
- User defines a Blueprint (structured input)
- Blueprint is validated
- One or more concrete configuration files are generated
Blueprint Definition
↓
Validation
↓
Target Generators
↓
config.toml / config.yaml / config.json / …
- Typed configuration model (Go structs)
- Strong validation with clear error reporting
- Deterministic output (same input → same output)
- Explicit environment layering (base → override)
- TOML
- YAML
- JSON
- INI (optional)
- Custom generators via interfaces
blueprint validateblueprint generate