depends on ALL DEPENDENCIES POINT INWARD
Frameworks & Drivers
Interface Adapters
Application / Use Cases
Domain
Aggregates
Value Objects
Domain Events
Ports (Interfaces)
ChatPort
QueryPort
EventPort
RepoPort
GatewayPort
AIPort
EventPub
Driving Adapters (Primary)
🌐
REST Controller
Spring @RestController — receives HTTP requests, validates DTOs, calls use cases
implements: WebPort
🔌
WebSocket Handler
Real-time MIA conversation stream, market data push, portfolio updates
implements: StreamPort
📨
Kafka Listener
@KafkaListener — consumes domain events from other bounded contexts
implements: EventPort
Scheduler
@Scheduled — SIP triggers, NAV refresh, compliance checks, report generation
implements: CronPort
Driven Adapters (Secondary)
💾
JPA Repository
Spring Data JPA — PostgreSQL persistence, implements domain Repository interfaces
implements: *Repository
🧠
Claude Gateway
SSE streaming client, tool_use orchestration, prompt management, token tracking
implements: AIGateway
🔍
Pinecone Client
Vector similarity search for RAG — fund factsheets, regulatory docs, user history
implements: VectorStore
🏦
MFU/Finvu Client
Anti-Corruption Layer translating ISO-20022/ReBIT to domain commands
implements: DistributionGateway
📤
Kafka Publisher
Publishes domain events to Kafka topics for choreography-based sagas
implements: EventPublisher
Domain Layer
com.byld.advisory.domain/
  model/ Goal, RiskProfile, ModelPortfolio
  vo/ Money, Percentage, ISIN, PAN
  event/ GoalCreated, RebalanceProposed
  port/ GoalRepository, AdvisoryGateway
Application Layer
com.byld.advisory.application/
  usecase/ CreateGoalUseCase
  usecase/ ProposeRebalanceUseCase
  dto/ GoalRequest, GoalResponse
  mapper/ GoalMapper (MapStruct)
Infrastructure Layer
com.byld.advisory.infra/
  web/ GoalController (@RestController)
  persistence/ JpaGoalRepository
  messaging/ KafkaEventPublisher
  config/ SecurityConfig, KafkaConfig
Shared Kernel
com.byld.shared/
  types/ Money, UserId, CorrelationId
  event/ DomainEvent, EventMetadata
  result/ Result<T>, Error
  security/ Principal, Permission
The Dependency Rule
Source code dependencies point INWARD. The Domain layer has ZERO framework imports — no Spring, no JPA, no Kafka annotations. It is pure Java with interfaces (Ports) that the outer layers implement.
-- Clean Architecture, Robert C. Martin (2017)
Frameworks
Adapters
Use Cases
Domain