apply TResult for an IQuery to force the expected result to be type safe and simplify the dispather usage and client api
implement distinct read and write dispatcher.
create dedicated project to host thea read side.
domain will be responsible only with commands and events
decoupling the command side from the write side
remove contracts project.
group commands and events in the domain layer.
group queries and results in the reports layer.