All Projects → ivanpaulovich → Event Sourcing Castanha

ivanpaulovich / 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.

Projects that are alternatives of or similar to Event Sourcing Castanha

Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+235.29%)
Mutual labels:  webapi, event-sourcing, event-driven, solid, kafka, mongodb, clean-architecture, ddd, cqrs, clean-code, domain-driven-design, tdd
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+133.82%)
Mutual labels:  microservice, webapi, event-sourcing, event-driven, solid, kafka, mongodb, ddd, cqrs, domain-driven-design
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (+92.65%)
Mutual labels:  event-sourcing, event-driven, eventstore, mongodb, dotnetcore, ddd, cqrs, domain-driven-design
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+9032.35%)
Mutual labels:  event-sourcing, dotnetcore, clean-architecture, ddd, cqrs, clean-code, domain-driven-design
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 (+330.88%)
Mutual labels:  microservice, webapi, solid, mongodb, ddd, cqrs, domain-driven-design
Clean Architecture Manga
🌀 Clean Architecture with .NET6, C#10 and React+Redux. Use cases as central organizing structure, completely testable, decoupled from frameworks
Stars: ✭ 3,104 (+4464.71%)
Mutual labels:  microservice, webapi, clean-architecture, clean-code, domain-driven-design, tdd
Architecture
.NET 6, ASP.NET Core 6, Entity Framework Core 6, C# 10, Angular 13, Clean Code, SOLID, DDD.
Stars: ✭ 2,285 (+3260.29%)
Mutual labels:  solid, dotnetcore, clean-architecture, ddd, clean-code, domain-driven-design
Dev Stuff
😎 Programming stuff for everyone. Collection of articles, videos about architecture, Domain Driven Design, microservices, testing etc.
Stars: ✭ 105 (+54.41%)
Mutual labels:  microservice, clean-architecture, ddd, cqrs, clean-code
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (+508.82%)
Mutual labels:  event-sourcing, event-driven, ddd, cqrs, domain-driven-design
All Things Cqrs
Comprehensive guide to a couple of possible ways of synchronizing two states with Spring tools. Synchronization is shown by separating command and queries in a simple CQRS application.
Stars: ✭ 474 (+597.06%)
Mutual labels:  kafka, mongodb, ddd, cqrs, domain-driven-design
Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (+63.24%)
Mutual labels:  event-sourcing, eventstore, ddd, cqrs, domain-driven-design
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+161.76%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing, clean-architecture
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+7429.41%)
Mutual labels:  event-sourcing, eventstore, ddd, cqrs, clean-code
Goes
Go Event Sourcing made easy
Stars: ✭ 144 (+111.76%)
Mutual labels:  event-sourcing, event-driven, ddd, cqrs, domain-driven-design
Rails event store
A Ruby implementation of an Event Store based on Active Record
Stars: ✭ 947 (+1292.65%)
Mutual labels:  event-sourcing, event-driven, ddd, cqrs, domain-driven-design
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+247.06%)
Mutual labels:  cqrs, ddd, eventstore, domain-driven-design, event-sourcing
Clean Ts Api
API em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles
Stars: ✭ 619 (+810.29%)
Mutual labels:  solid, mongodb, clean-architecture, clean-code, tdd
Cqrs Clean Eventual Consistency
CQRS, using Clean Architecture, multiple databases and Eventual Consistency
Stars: ✭ 247 (+263.24%)
Mutual labels:  mongodb, clean-architecture, ddd, cqrs, tdd
Learning.EventStore
A framework for CQRS, Eventsourcing, and messaging that uses Redis pub/sub for messaging and offers event persistence in Redis, SQL Server, or PostgreSQL.
Stars: ✭ 58 (-14.71%)
Mutual labels:  cqrs, dotnetcore, eventstore, event-sourcing, event-driven
iam-ddd-cqrs-es-nestjs
Identity and Access Management
Stars: ✭ 34 (-50%)
Mutual labels:  cqrs, tdd, ddd, eventstore, event-sourcing

Castanha

Castanha latest Docker build Gitter

Castanha is a Service Template for helping you to build evolvable, adaptable and maintainable Event Sourcing applications. It follows the principles from the Clean Architecture book and has a Domain built on Domain-Driven Design. It is easy for you to start your new microservice based on its guidelines and patterns.

Compiling from source

To run Castanha from source, clone this repository to your machine, compile and test it:

git clone https://github.com/ivanpaulovich/castanha.git
cd castanha/source/WebAPI/Castanha.UI
dotnet run

The Clean Architecture

The implementation result of the Clean Architecture is a software that encapsulate Business Rules in Use Cases and the Enterprise Rules in Entities. Also the Use Cases are independent from details like User Interface, Data Access, Web Server or any external agency.

Clean Architecture by Uncle Bob

The Clean Architecture Diagram by Uncle Bob.

Concept Description
DDD The Use Cases of the Account Balance are the Ubiquitious Language designed in the Domain and Application layers, we use the Eric Evans terms like Entities, Value Object, Aggregates Root and Bounded Context.
TDD From the beginning of the project we developed Unit Tests that helped us to enforce the business rules and to create an application that prevents bugs intead of finding them. We also have more sophisticated tests like Use Case Tests, Mapping Tests and Integration Tests.
SOLID The SOLID principles are all over the the solution. The knowledge of SOLID is not a prerequisite but it is highly recommended.
Entity-Boundary-Interactor (EBI) The goal of EBI architecture is to produce a software implementation agnostic to technology, framework, or database. The result is focus on use cases and input/output.
Microservice We designed the software around the Business Domain, having Continous Delivery and Independent Deployment.
Logging Logging is a detail. We plugged Serilog and configured it to redirect every log message to the file system.
Docker Docker is a detail. It was implemented to help us make a faster and reliable deployment.
MongoDB MongoDB is a detail. You could create new Data Access implementation and setup it with Autofac.
.NET Core 2.0 .NET Core is a detail. Almost everything in this code base could be ported to other versions.

Flow of Control: The Register Use Case

Flow of Control: Customer Registration

Requirements

Prerequisites Setup

The only one prerequisite to run the Web API is a valid connection string to MongoDB. To help you run it without hard work follow the steps on prerequisites setup page.

Running the latest Docker Build

You can run the Docker container of this project with the following command:

$ docker run -d -p 8000:80 \
	-e modules__2__properties__ConnectionString=mongodb://10.0.75.1:27017 \
	--name castanha \
	ivanpaulovich/castanha:latest

Then navigate to http://localhost:8000/swagger and play with de Swagger.

Live Demo on Azure

Castanha Live Demo on Azure

You can play with the latest build of Castanha.

This source code and website should be used only for learning purposes and all data will be erased weekly.

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].