All Projects → thangchung → Practical Clean Ddd

thangchung / Practical Clean Ddd

Licence: mit
A simplified and effortless approach to get started with Domain-driven Design, Clean Architecture, CQRS, and Microservices patterns

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Practical Clean Ddd

Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+467.86%)
Mutual labels:  microservices, microservice, ddd, cqrs, ddd-architecture
Dev Stuff
😎 Programming stuff for everyone. Collection of articles, videos about architecture, Domain Driven Design, microservices, testing etc.
Stars: ✭ 105 (+275%)
Mutual labels:  microservice, clean-architecture, ddd, cqrs, ddd-architecture
Netcorekit
💗 A crafted toolkit for building cloud-native apps on the .NET platform
Stars: ✭ 248 (+785.71%)
Mutual labels:  aspnetcore, clean-architecture, ddd, microservices-architecture, ddd-architecture
Monolith Microservice Shop
Source code for https://threedots.tech/post/microservices-or-monolith-its-detail/ article.
Stars: ✭ 83 (+196.43%)
Mutual labels:  microservices, clean-architecture, ddd, microservices-architecture
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (+142.86%)
Mutual labels:  microservice, clean-architecture, ddd, cqrs
Php Ddd Example
🐘🎯 Hexagonal Architecture + DDD + CQRS in PHP using Symfony 5
Stars: ✭ 1,960 (+6900%)
Mutual labels:  microservice, ddd, cqrs, microservices-architecture
Dotnetcore Microservices Poc
Very simplified insurance sales system made in a microservices architecture using .NET Core
Stars: ✭ 1,304 (+4557.14%)
Mutual labels:  microservices, ddd, cqrs, microservices-architecture
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (+257.14%)
Mutual labels:  microservices, aspnetcore, ddd, cqrs
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+6696.43%)
Mutual labels:  microservices, clean-architecture, ddd, microservices-architecture
awesome-software-architecture
A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.
Stars: ✭ 1,594 (+5592.86%)
Mutual labels:  ddd, clean-architecture, microservices-architecture, ddd-architecture
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+714.29%)
Mutual labels:  microservices, clean-architecture, ddd, cqrs
Awesome Microservices Netcore
💎 A collection of awesome training series, articles, videos, books, courses, sample projects, and tools for Microservices in .NET Core
Stars: ✭ 865 (+2989.29%)
Mutual labels:  microservices, microservice, aspnetcore, microservices-architecture
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+22078.57%)
Mutual labels:  clean-architecture, ddd, cqrs, ddd-architecture
Ultimate Backend
Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication
Stars: ✭ 978 (+3392.86%)
Mutual labels:  microservices, ddd, cqrs, ddd-architecture
Run Aspnetcore
A starter kit for your next ASP.NET Core web application. Boilerplate for ASP.NET Core reference application, demonstrating a layered application architecture with applying Clean Architecture and DDD best practices. Download 100+ page eBook PDF from here ->
Stars: ✭ 227 (+710.71%)
Mutual labels:  aspnetcore, clean-architecture, ddd, ddd-architecture
Pos
Sample Application DDD, Reactive Microservices, CQRS Event Sourcing Powered by DERMAYON LIBRARY
Stars: ✭ 207 (+639.29%)
Mutual labels:  microservices, cqrs, microservices-architecture, ddd-architecture
MonolithicArchitecture
This repository presents an approach on how to build an application using Monolithic architecture, ASP.NET Core, EntityFrameworkCore, Identity Server, CQRS, DDD
Stars: ✭ 18 (-35.71%)
Mutual labels:  cqrs, aspnetcore, ddd, clean-architecture
Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (+2428.57%)
Mutual labels:  microservices, ddd, cqrs, microservices-architecture
Go Realworld Clean
a clean architecture implementation of the realworldapp : https://github.com/gothinkster/realworld
Stars: ✭ 301 (+975%)
Mutual labels:  clean-architecture, ddd, ddd-architecture
Hexagonal Architecture Acerola
An Hexagonal Architecture service template with DDD, CQRS, TDD and SOLID using .NET Core 2.0. All small features are testable and could be mocked. Adapters could be mocked or exchanged.
Stars: ✭ 293 (+946.43%)
Mutual labels:  microservice, ddd, cqrs

practical-clean-ddd

The practical repository uses coolstore domain which is mainly borrowed from https://github.com/zkavtaskin/Domain-Driven-Design-Example to demonstrate how to apply Domain Driven Design seamlessly with Clean Architecture.

Give a star ⭐

A bright future of the .NET Community! What you LIKE or SHARE on practical-clean-ddd repository will help to strengthen and spread-out the way YOU develop the cloud-native application with the .NET platform and toolings as well as microservices development on Dapr and Kubernetes with .NET toolkit.

So if you use this repository for your samples, workshop, your project or whatever you did, please give a star ⭐ for it. Thank you very much 👍

Give it a try!

  • Prerequisite

    • .NET SDK: 5.0.200-preview.21079.7
    • Rust: v1.50.0
    • nodejs: v15.5.1
    • tye: 0.7.0-alpha.21070.7+eb3b50699b7a5f2d0997a5cc8c5185d056dde8ec
    • dapr: 1.0.0
  • Starting the Api

$ tye run
  • Starting the web application
$ cd src\Web
$ npm i
$ npm run dev
  • Public Apis:

Tye Dashboard: http://localhost:8000

Play around at restclient.http

No. Service name Service uri
1 gateway http://localhost:5000
2 product (internal) http://localhost:5002
3 customer (internal) http://localhost:5003
4 setting (internal) http://localhost:5005
5 audit (internal) http://localhost:5010
6 frontend http://localhost:3000

Business Usecases

High level context

ERD

Clean Domain Driven-design

Domain-driven Design demonstrates it can help the business tidy and organized in many years. But it is hard to approach and use, we need to make it easier to use in the real project when we get started.

Clean Architecture helps the project structure easier to refactor and evolve in medium and big projects. Especially in the Microservice world, we always want to do and try with a lot of time in the project lifetime.

Clean Domain-driven Design is a collection of basic building blocks and project structure to help we get starting the project with less code boilerplate and effortless. We focus on the Microservice approach of how can we organize code, the project with the monorepo approach, and you can use it for modular monolith project as well.

Core project

Domain

TODO

Repository

TODO

Infrastructure project

TODO

Application project

TODO

Public CRUD interface

In medium and large software projects, we normally implement the CRUD actions over and over again. And it might take around 40-50% codebase just to do CRUD in the projects. The question is can we make standardized CRUD APIs, then we can use them in potential projects in the future? That is in my mind for a long time when I started and finished many projects, and I decide to take time to research and define the public interfaces for it as below

Common

public record ResultModel<T>(T Data, bool IsError = false, string? ErrorMessage = default);
public interface ICommand<T> : IRequest<ResultModel<T>> {}
public interface IQuery<T> : IRequest<ResultModel<T>> {}

[R]etrieve

// input model for list query (normally using for the table UI control with paging, filtering and sorting)
public interface IListQuery<TResponse> : IQuery<TResponse>
{
  public List<string> Includes { get; init; }
  public List<FilterModel> Filters { get; init; }
  public List<string> Sorts { get; init; }
  public int Page { get; init; }
  public int PageSize { get; init; }
}
// output model with items, total items, page and page size with serving for binding with the table UI control
public record ListResponseModel<T>(List<T> Items, long TotalItems, int Page, int PageSize);
public interface IItemQuery<TId, TResponse> : IQuery<TResponse>
{
  public List<string> Includes { get; init; }
  public TId Id { get; init; }
}

[C]reate

public interface ICreateCommand<TRequest, TResponse> : ICommand<TResponse>, ITxRequest
{
    public TRequest Model { get; init; }
}

[U]pdate

public interface IUpdateCommand<TRequest, TResponse> : ICommand<TResponse>, ITxRequest
{
  public TRequest Model { get; init; }
}

[D]elete

public interface IDeleteCommand<TId, TResponse> : ICommand<TResponse> where TId : struct
{
  public TId Id { get; init; }
}

Sample pages

Refs

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].