Skip to content

TodoApp Backend in .NET Core with DDD, CQRS and EventSourcing approach

License

Notifications You must be signed in to change notification settings

SBortz/TodoAppDdd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TodoAppDdd

TodoApp Backend in .NET Core 2.2 with DDD, CQRS and EventSourcing approach

Why?

I work on this project in order to understand DDD concepts and EventSourcing.

Architecture

I used no DDD frameworks or anything else. The EventStore is hand-coded and very simple. There are 2 implementations. One saves the events to a text file and the other one works as in-memory list. I did this on purpose in order to keep it as simple as possible.

Solution structure is:

  • Core
    • Domain
    • App
    • App.Contracts
  • Infrastructure
    • Bootstrapper
    • Persistence
  • Presentation
    • Web
    • Api

Domain

The domain is the innermost core of the solution. It depends on nothing. Aggregates, DomainEvents and pure business logic is placed here.

App

Command handler, query handler and mapping logic does live here.

App.Contracts

Just interfaces and DTOs.

Persistence

EventStore implementation lives here.

Web / Api

From here only App.Contracts is referenced. The domain is not visible from here. Only the commands/querys are known here and are used to forward them to their handlers. But only the interface of handlers is known here.

These projects are hosted here:
Api: https://todoappdddapi.azurewebsites.net/api/todo
Web: https://todoappdddweb.azurewebsites.net/

You can test the api via TodoBackend.com:
https://www.todobackend.com/client/index.html?https://todoappdddapi.azurewebsites.net/api/todo

Bootstrapper

This sticks together all dependencies and adds them to the dependency container by hand.

About

TodoApp Backend in .NET Core with DDD, CQRS and EventSourcing approach

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published