# Core Data Flow (Strict) This document defines the **Core** data flow rules and boundaries. Core scope: - `core/**` Core does not know: - HTTP - Next.js - databases - DTOs - UI models ## 1) Layers inside Core Core contains two inner layers: - Domain - Application ### 1.1 Domain Domain is business truth. Allowed: - Entities - Value Objects - Domain Services Forbidden: - DTOs - frameworks - IO See [`docs/architecture/core/DOMAIN_OBJECTS.md`](docs/architecture/core/DOMAIN_OBJECTS.md:1). ### 1.2 Application Application coordinates business intents. Allowed: - Use Cases (commands and queries) - Application-level ports (repository ports, gateways) Forbidden: - HTTP - persistence implementations - frontend models ## 2) Core I/O boundary All communication across the Core boundary occurs through **ports**. Rules: - Port interfaces live in Core. - Implementations live outside Core. ## 3) Core data types (strict) - Use Case inputs are plain data and/or domain types. - Use Case outputs are plain data and/or domain types. Core MUST NOT define HTTP DTOs. ## 4) Canonical flow ```text Delivery App (HTTP or Website) ↓ Core Application (Use Case) ↓ Core Domain (Entities, Value Objects) ↓ Ports (repository, gateway) ↓ Adapter implementation (outside Core) ``` ## 5) Non-negotiable rules 1. Core is framework-agnostic. 2. DTOs do not enter Core. 3. Core defines ports; outer layers implement them.