- Static assets (photos) stored in S3 eu-west-1.
- Value objects
- Aggregates
- Always-valid entities
- Encapsulation
- Repository pattern
- Core business logic decoupled from infrastructure via interfaces
- Pluggable dependencies
- Unit tests drive application logic
- Inversion of dependencies to follow the dependency rule
- Application logic decoupled from delivery mechanism (web controllers)
- Application logic decoupled from infrastructure via interfaces and adapters
- Application use cases modelled explicitly as Handler objects
- Simple DTOs passed between layers
- Command side involves DDD-style domain model w/encapsulation, whereas query side involves simple DTO models
- Query side reads data from database directly through Dapper using hand-written SQL queries
- Command side loads aggregate roots wholesale through Entity Framework Core
- Asynchronous workflows via messaging with AWS SNS
- Outbox pattern
- Idempotent consumers
- Websockets for live updates using SignalR
- Use cases packaged by feature rather than by layer
- Request/response objects not shared between features