All Projects → ivanpaulovich → Event Sourcing Jambo

ivanpaulovich / Event Sourcing Jambo

Licence: apache-2.0
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)

Projects that are alternatives of or similar to Event Sourcing Jambo

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 (-57.23%)
Mutual labels:  microservice, webapi, event-sourcing, event-driven, solid, kafka, mongodb, ddd, cqrs, domain-driven-design
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+43.4%)
Mutual labels:  microservices, webapi, event-sourcing, event-driven, solid, kafka, mongodb, ddd, cqrs, 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 (+84.28%)
Mutual labels:  microservice, webapi, solid, mongodb, dotnet-core, ddd, cqrs, domain-driven-design
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (+160.38%)
Mutual labels:  microservices, event-sourcing, event-driven, dotnet-core, 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 (-17.61%)
Mutual labels:  event-sourcing, event-driven, mongodb, dotnet-core, ddd, cqrs, domain-driven-design
Pos
Sample Application DDD, Reactive Microservices, CQRS Event Sourcing Powered by DERMAYON LIBRARY
Stars: ✭ 207 (+30.19%)
Mutual labels:  microservices, event-sourcing, event-driven, cqrs-es, kafka, cqrs, ddd-architecture
Rails event store
A Ruby implementation of an Event Store based on Active Record
Stars: ✭ 947 (+495.6%)
Mutual labels:  event-sourcing, event-driven, cqrs-es, ddd, cqrs, domain-driven-design
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (-20.75%)
Mutual labels:  microservices, cqrs-es, ddd, cqrs, domain-driven-design
Jivejdon
Jivejdon is a Domain Driven Design appication with CQRS/ES/Clean/Hexagonal architecture
Stars: ✭ 287 (+80.5%)
Mutual labels:  event-driven, cqrs-es, ddd, domain-driven-design, ddd-architecture
Todomvc Ddd Cqrs Eventsourcing
Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design
Stars: ✭ 134 (-15.72%)
Mutual labels:  microservices, cqrs-es, 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 (+198.11%)
Mutual labels:  kafka, mongodb, ddd, cqrs, domain-driven-design
Kledex
.NET Standard framework to create simple and clean design. Advanced features for DDD, CQRS and Event Sourcing.
Stars: ✭ 502 (+215.72%)
Mutual labels:  event-sourcing, service-bus, dotnet-core, ddd, cqrs
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+3805.66%)
Mutual labels:  event-sourcing, ddd, cqrs, domain-driven-design, ddd-architecture
Event Sourcing Cqrs Examples
Event Sourcing and CQRS in practice.
Stars: ✭ 265 (+66.67%)
Mutual labels:  event-sourcing, cqrs-es, ddd, cqrs, domain-driven-design
delta
DDD-centric event-sourcing library for the JVM
Stars: ✭ 15 (-90.57%)
Mutual labels:  cqrs, ddd, domain-driven-design, event-sourcing, cqrs-es
Practical Clean Ddd
A simplified and effortless approach to get started with Domain-driven Design, Clean Architecture, CQRS, and Microservices patterns
Stars: ✭ 28 (-82.39%)
Mutual labels:  microservices, microservice, ddd, cqrs, ddd-architecture
Ultimate Backend
Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication
Stars: ✭ 978 (+515.09%)
Mutual labels:  microservices, event-sourcing, ddd, cqrs, ddd-architecture
Digital Restaurant
DDD. Event sourcing. CQRS. REST. Modular. Microservices. Kotlin. Spring. Axon platform. Apache Kafka. RabbitMQ
Stars: ✭ 222 (+39.62%)
Mutual labels:  microservices, event-sourcing, kafka, ddd, cqrs
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 (+345.28%)
Mutual labels:  microservices, event-sourcing, event-driven, ddd, cqrs
Asombroso Ddd
Una lista cuidadosamente curada de recursos sobre Domain Driven Design, Eventos, Event Sourcing, Command Query Responsibility Segregation (CQRS).
Stars: ✭ 41 (-74.21%)
Mutual labels:  event-sourcing, event-driven, cqrs-es, cqrs, domain-driven-design

A solution based on a Event-Driven architecture with DDD and CQRS. The solution contains the following applications.

  • A Producer Web API which receives Commands to produce Domain Events. This one also receives Queries and returns JSON.
  • A Consumer Console App that reads the Event Stream and do a projection to a MongoDB database.
  • A Web API for authentication and JWT generation.

Checkout the Source Code on GitHub

Requirements

Environment setup

If you already have valid connections for Kafka and MongoDB you could skip this step and go to Running the applications step.

  • Run the ./up-kafka-mongodb.sh bash script to run Kafka and MongoDB as Docker Containers. Please wait until the ~800mb download to be complete.
$ ./up-kafka-mongodb.sh
Pulling mongodb (mongo:latest)...
latest: Pulling from library/mongo
Digest: sha256:2c55bcc870c269771aeade05fc3dd3657800540e0a48755876a1dc70db1e76d9
Status: Downloaded newer image for mongo:latest
Pulling kafka (spotify/kafka:latest)...
latest: Pulling from spotify/kafka
Digest: sha256:cf8f8f760b48a07fb99df24fab8201ec8b647634751e842b67103a25a388981b
Status: Downloaded newer image for spotify/kafka:latest
Creating setup_mongodb_1 ...
Creating setup_kafka_1 ...
Creating setup_mongodb_1
Creating setup_mongodb_1 ... done
  • Check if the data layer is ready with the following commands:
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              d22888af0ce0        17 hours ago        361MB
spotify/kafka       latest              a9e0a5b8b15e        11 months ago       443MB
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
32452776153f        spotify/kafka       "supervisord -n"         2 days ago          Up 2 days           0.0.0.0:2181->2181/tcp, 0.0.0.0:9092->9092/tcp   setup_kafka_1
ba28cf144478        mongo               "docker-entrypoint..."   2 days ago          Up 2 days           0.0.0.0:27017->27017/tcp                         setup_mongodb_1

If Kafka is running well it will be working with the 10.0.75.1:9092 connection string. if MongoDB is running well it will be working at mongodb://10.0.75.1:27017 connection string.

Running the applications

You have two options to run the applications, one is by opening with Visual Studio 2017 and the other is by running dotnet core commands.

Option 1 - Running with Visual Studio 2017

Open the three solutions on three Visual Studios them run the following projects.

  • Jambo.Auth.UI.
  • Jambo.Consumer.UI.
  • Jambo.Producer.UI.

Option 2 - Running with dotnet commands

How to run the Bearer Authencation API

  1. Run the command dotnet run at source\Auth\Jambo.Auth.UI folder.
$ dotnet run
Using launch settings from C:\git\jambo\source\Auth\Jambo.Auth.UI\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\git\jambo\source\Auth\Jambo.Auth.UI
Now listening on: http://localhost:16024
Application started. Press Ctrl+C to shut down.
  1. Navigate to the Swagger UI at (eg. http://localhost:16024/swagger).
  2. Post the following credentials:
{
  "username": "ivanpaulovich",
  "password": "mysecret"
}
  1. Store the Bearer Token because you will need the token value to log on Producer API.
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhYzA4MmE3OS1lMWY3LTQ4MTktYmU1Mi1hOTQwMTBkM2VjZTciLCJzdWIiOiJzdHJpbmciLCJleHAiOjE1MTI0Nzg5ODgsImlzcyI6Imh0dHA6Ly9teWFjY291bnRhcGkiLCJhdWQiOiJodHRwOi8vbXlhY2NvdW50YXBpIn0.9YKGmKaptLBDcExHhPOQ3_j9TsdbkcRf8ZtvIkdq8Go",
  "expiration": "2017-12-05T13:03:08Z"
}

How to run the Consumer API

  1. Run the command dotnet run at source\Consumer\Jambo.Consumer.UI folder
$ dotnet run
11/5/2017 11:17:20 AM Waiting for events..
11/5/2017 11:18:20 AM Waiting for events..
11/5/2017 11:19:20 AM Waiting for events..
11/5/2017 11:20:20 AM Waiting for events..
11/5/2017 11:21:20 AM Waiting for events..
11/5/2017 11:22:20 AM Waiting for events..
  1. Attention: keep the Console App running for events processing.

How to run the Producer API

Authorization

  1. Run the command dotnet run at the source\Producer\Jambo.Producer.UI folder.
$ dotnet run
Using launch settings from C:\git\jambo\source\Producer\Jambo.Producer.UI\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\git\jambo\source\Producer\Jambo.Producer.UI
Now listening on: http://localhost:16959
Application started. Press Ctrl+C to shut down.
  1. Navigate to the Swagger UI (eg. http://localhost:14398/swagger).
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].