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.