You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's loan investment domain. A loan is split into tranches. Tranches can have different monthly interest percentages. Besides, each tranche has a maximum amount available to invest. There are investors who can invest into those tranches and get interest in the end of each month.
# Project structure
There three higher-level directories: domain, useCases and infrastructure. Domain is where, well, domain concepts live: entities, value-objects and repository interfaces. UseCases is where those domain entities are orchestrated by USeCases classes. Infrastructure code resided in infrastructure directory.
# Use cases
UseCase classes represent use-case approach from clean architecture. It's akin to an Application Service class from DDD: class that coordinates injected dependencies to carry out some use case logic.
# Action interface
This interface declares the basic functionality of any application: it acts upon a request and returns a response.
# Validation
I follow the approach of context validation. Hence it resides in commands, not entities. Plus with this approach it's way easier to map errors to UI -- and with no exceptions thrown.