36 lines
1.2 KiB
Markdown
36 lines
1.2 KiB
Markdown
|
|
# Dependency Rules
|
||
|
|
|
||
|
|
Status: Mandatory
|
||
|
|
Date: 2026-07-03
|
||
|
|
|
||
|
|
## Rule Set
|
||
|
|
|
||
|
|
1. One-way dependency direction only.
|
||
|
|
2. No circular dependencies.
|
||
|
|
3. No feature imports another feature directly.
|
||
|
|
4. Shared is dependency-minimal and feature-agnostic.
|
||
|
|
5. Core is platform base and does not consume feature modules.
|
||
|
|
6. UI Library is pure presentation and cannot depend on facades/services with business behavior.
|
||
|
|
7. Widgets depend on UI Library and contracts, not on feature internals.
|
||
|
|
8. Pages compose layouts/widgets via contracts and facades.
|
||
|
|
9. Facades depend on services/contracts, never on UI components.
|
||
|
|
10. Integrations isolate external systems and expose stable interfaces.
|
||
|
|
|
||
|
|
## Dependency Injection Rules
|
||
|
|
|
||
|
|
- Depend on interfaces/tokens where replacement is expected.
|
||
|
|
- Avoid direct concrete service references across bounded contexts.
|
||
|
|
- Use adapter pattern for legacy stable modules.
|
||
|
|
|
||
|
|
## Cross-Domain Communication
|
||
|
|
|
||
|
|
- Allowed through contracts, events, and facade APIs.
|
||
|
|
- Forbidden through direct state mutation across domains.
|
||
|
|
|
||
|
|
## Forbidden Patterns
|
||
|
|
|
||
|
|
- Component to HttpClient direct calls in reusable visual components.
|
||
|
|
- Direct environment import in visual components.
|
||
|
|
- Direct localStorage/sessionStorage usage in UI components.
|
||
|
|
- Route navigation logic in UI library components.
|