All Projects → bringmeister → Ddd With Kotlin

bringmeister / Ddd With Kotlin

Licence: mit
A demo project to show a Domain Driven Design with Kotlin.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Ddd With Kotlin

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 (+1943.59%)
Mutual labels:  ddd, event-driven
Cart
No description or website provided.
Stars: ✭ 22 (-71.79%)
Mutual labels:  ddd, event-driven
eventcatalog
Discover, Explore and Document your Event Driven Architectures powered by Markdown.
Stars: ✭ 392 (+402.56%)
Mutual labels:  ddd, event-driven
Goes
Go Event Sourcing made easy
Stars: ✭ 144 (+84.62%)
Mutual labels:  event-driven, ddd
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (+430.77%)
Mutual labels:  event-driven, ddd
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+103.85%)
Mutual labels:  event-driven, ddd
awesome-talks
Awesome talks about event sourcing, cqrs, microservices, funcional programming ...
Stars: ✭ 23 (-70.51%)
Mutual labels:  ddd, event-driven
kingdom-python-server
Modular, cohesive, transparent and fast web server template
Stars: ✭ 20 (-74.36%)
Mutual labels:  ddd, event-driven
Jivejdon
Jivejdon is a Domain Driven Design appication with CQRS/ES/Clean/Hexagonal architecture
Stars: ✭ 287 (+267.95%)
Mutual labels:  event-driven, ddd
ddd-example-ecommerce
Domain-driven design example in Java with Spring framework
Stars: ✭ 73 (-6.41%)
Mutual labels:  ddd, event-driven
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 (+67.95%)
Mutual labels:  event-driven, ddd
Rails event store
A Ruby implementation of an Event Store based on Active Record
Stars: ✭ 947 (+1114.1%)
Mutual labels:  event-driven, ddd
Qframework
Unity3D System Design Architecture
Stars: ✭ 2,326 (+2882.05%)
Mutual labels:  ddd, event-driven
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+192.31%)
Mutual labels:  event-driven, ddd
ftgogo
FTGOGO - event-driven architecture demonstration application using edat
Stars: ✭ 82 (+5.13%)
Mutual labels:  ddd, event-driven
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 (+807.69%)
Mutual labels:  event-driven, ddd
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 (-12.82%)
Mutual labels:  event-driven, ddd
Gev
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.
Stars: ✭ 1,082 (+1287.18%)
Mutual labels:  event-driven
Stepping
Stepping - a tools for code design, event storming, domain model generate.
Stars: ✭ 67 (-14.1%)
Mutual labels:  ddd
Lectures
Lecture scripts and slides I use during the Software Engineering course at TU Dresden
Stars: ✭ 52 (-33.33%)
Mutual labels:  ddd

DDD with Kotlin

Build Status License

This is a simple demo project to show a Domain Driven Design with Kotlin.

Note that there is a similar version of this demo which is using event sourcing at event-sourcing-with-kotlin.

Run it

./gradlew bootRun

Then simulate an incoming event:

POST to http://localhost:8080/master_data_update
POST to http://localhost:8080/media_data_update

Example Use Case

The subject of this demo is the Product Service. The Product Service is located between five other components. The Master Data Service will push new products to the Product Service. This is the beginning of our business process. The Product Service will register each new product at the Media Data Service. After a product is registered, the Product Service will receive updates for this product from the Media Data Service. After an update was received, the Product Service will:

  • Update the CDN if media data has changed
  • Update the Shop and search index if master data has changed
+-------------+
| Master Data |
|   Service   |
+-------------+
   |                     << DEMO >>   
   +------------------► +---------+
    1: update product   | Product |
                        | Service |---------+---------+
               +------► +---------+         |         |
      3:       |             |      2:      |         |        5:
 push updates  |             | register new |         | update if master 
               |             |   product    |         | data has changed
   +------------+            |              |         |
   | Media Data | ◄----------+              |         +----------+
   |  Service   |                           |         |          |
   +------------+        4: update if media |         |          |
                          data has changed  |         |          |
                                            ▼         ▼          ▼
                                         +-----+  +------+  +--------+ 
                                         | CDN |  | Shop |  | Search |
                                         +-----+  +------+  +--------+

What to see

  • A domain entity called Product.kt which encapsulates business logic and throws domain events.
  • A process flow with events ("something has happened") and commands ("now do something").
  • Value objects such as ProductNumber.kt or ProductInformation.kt.
  • A ports-and-adapters package layout.
  • An anti-corruption layer for external events - they will be transformed to internal commands.

Resources

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