feat: define clean architecture layers and ports

This commit is contained in:
donghyeon-ka
2026-07-25 20:39:59 +09:00
parent 24d7072d66
commit 49b20bd557
11 changed files with 227 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
# Clean Architecture layer contract
The import direction is `domain <- application <- presentation`; concrete
adapters implement application-owned ports and are assembled only in
`src/bootstrap`.
| Layer | Owns | May depend on |
| --- | --- | --- |
| `domain` | framework-neutral models and pure policies | domain siblings |
| `application` | use cases, ports, orchestration, view-models | domain and application siblings |
| `presentation` | routes, components, user interaction and view state | application public API and shared UI |
| `adapters` | browser and third-party implementations of application ports | application ports and limited domain values |
| `bootstrap` | runtime configuration, adapter construction and React mount | all selected runtime modules |
The following edges are forbidden:
- domain to application, presentation, adapters, bootstrap, React, or browser globals
- application to presentation, concrete adapters, bootstrap, React, or browser globals
- presentation to concrete adapters, raw DTO schemas, or storage implementations
- an adapter to presentation, bootstrap internals, or another concrete adapter
`bootstrap` contains composition only. Business rules and page-specific
orchestration belong to domain/application.
Architecture reports use this shape:
```json
{
"schemaVersion": 1,
"generatedAt": "ISO-8601",
"rules": [{ "name": "rule-id", "severity": "error", "violations": 0 }],
"summary": { "errors": 0, "warnings": 0 }
}
```