Software Architectural Pattern
JSON Schema for documenting a software architectural pattern, its use cases, components, and tradeoffs
Best PracticesDesign PatternsSoftware ArchitectureSystem DesignMicroservicesMVCCQRSEvent-Driven
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique identifier for the pattern |
| name | string | Name of the architectural pattern |
| category | string | High-level category of the architectural pattern |
| description | string | Detailed description of what the pattern is and how it works |
| aliases | array | Alternative names for this pattern |
| components | array | Key architectural components of this pattern |
| useCases | array | Common use cases and scenarios where this pattern applies |
| benefits | array | Advantages of using this pattern |
| tradeoffs | array | Disadvantages or challenges of this pattern |
| relatedPatterns | array | Names of related or complementary patterns |
| references | array | Authoritative references and documentation |
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://api-evangelist.github.io/software-design-architectural-patterns/json-schema/architectural-pattern-schema.json",
"title": "Software Architectural Pattern",
"description": "JSON Schema for documenting a software architectural pattern, its use cases, components, and tradeoffs",
"type": "object",
"required": ["name", "category", "description"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the pattern"
},
"name": {
"type": "string",
"description": "Name of the architectural pattern"
},
"category": {
"type": "string",
"enum": [
"Layered",
"Microservices",
"Event-Driven",
"Service-Oriented",
"CQRS",
"Hexagonal",
"Serverless",
"MVC",
"Pipe-and-Filter",
"Space-Based",
"Peer-to-Peer"
],
"description": "High-level category of the architectural pattern"
},
"description": {
"type": "string",
"description": "Detailed description of what the pattern is and how it works"
},
"aliases": {
"type": "array",
"items": {"type": "string"},
"description": "Alternative names for this pattern"
},
"components": {
"type": "array",
"items": {
"$ref": "#/definitions/Component"
},
"description": "Key architectural components of this pattern"
},
"useCases": {
"type": "array",
"items": {"type": "string"},
"description": "Common use cases and scenarios where this pattern applies"
},
"benefits": {
"type": "array",
"items": {"type": "string"},
"description": "Advantages of using this pattern"
},
"tradeoffs": {
"type": "array",
"items": {"type": "string"},
"description": "Disadvantages or challenges of this pattern"
},
"relatedPatterns": {
"type": "array",
"items": {"type": "string"},
"description": "Names of related or complementary patterns"
},
"references": {
"type": "array",
"items": {
"$ref": "#/definitions/Reference"
},
"description": "Authoritative references and documentation"
}
},
"definitions": {
"Component": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Component name"
},
"description": {
"type": "string",
"description": "Role of this component in the pattern"
},
"responsibilities": {
"type": "array",
"items": {"type": "string"},
"description": "Key responsibilities of this component"
}
}
},
"Reference": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title of the reference"
},
"url": {
"type": "string",
"format": "uri",
"description": "URL to the reference"
},
"author": {
"type": "string",
"description": "Author of the reference"
}
}
}
}
}