Skip to content

krater-app/api

Repository files navigation

Krater API

The "Krater" is nothing but a copy of a reddit-like app. The project was created for the purpose of learning Domain Driven Design, a Modular Monolith and event driven architecture.

Architectural Drivers 🏎

C4 Model 📡

Legend

Model C4 Legend

C1 System Context

Model C4 - System Context

C2 Container

Model C4 - Container

Modular Monolith 🗄

The project uses rush.js to treat each module as a separate package from the node.js perspective.

Domain Driven Design 👨🏼‍💼

In order to better understand and implement the application, Domain Driven Design (DDD) was used both from the strategic and tactical side.

Strategic Part 🙊

When it comes to discovering the domain, getting to know the actors and likely bounded contexts, the Event Storming technique was used.

Miro Board

A full session snapshot can be found at the Miro Board link.

Tactical Part 💻

Event Driven Architecture ✉️

Single module events 📦

Module communication with Outbox Pattern 📤