Blueprint System
The blueprint system is the heart of Radish.
Blueprints provide a structured way to describe an application before implementation details are chosen. They are designed to be both human-readable and machine-compilable.
What a Blueprint Describes
A blueprint describes application intent in a form that can be compiled into architecture.
Common concepts include:
- entities
- fields
- relationships
- ownership
- roles and permissions
- indexes
- versioning behavior
- metadata and exposure rules
Example:
version: 1
entities:
Concept:
fields:
title:
type: string
required: true
authorId:
type: objectId
ref: User
Blueprint Principles
Blueprints should be:
- explicit
- structured
- versionable
- portable
- independent of unnecessary framework-specific details
Blueprint Versioning
Blueprints should include a spec version:
version: 1
This is separate from package versions or generator versions.