YETI
GithubDemo
1.0.0
1.0.0
  • YETI
  • Features
  • Getting Started
    • Why
    • Installation
    • Project Layout
    • NX commands
    • Playbook
    • NestJS Playbook
    • Scaffolding
  • Concepts
    • Introduction
    • Monorepo
    • DDD
    • Clean Architecture
  • Advanced
    • Content Management
    • Protobuf Tools
    • Protoc
    • Envoy
    • Style Guild
    • Angular Universal
    • Firebase
  • Modules
    • Apps
      • WebApp
      • Api
    • Libs
      • Admin
      • Blog
      • Core
      • Dashboard
      • Gen
      • Home
      • Not Found
      • Shared
  • GitOps
    • Build
    • Code Quality
    • API Docs
    • Release
    • CICD
  • DevOps
    • Database
    • Kubernetes
    • Deploy
  • Recipes
    • Authentication
    • Caching
    • Component Events from NGXS
    • Debouncing Actions
    • Dynamic Plugins
    • Immutability Helpers
    • Style Guide
    • Unit Testing
  • Community
    • Resources
    • Contributors
    • Contributing
  • FAQ
    • Yeti
    • Angular
    • GitBook
    • Awesome Links
  • Change Log
Powered by GitBook
On this page
  • Concepts
  • What's Domain Driven Design about
  • Workspace
  • Project structure
  • Directory structure
  • References

Was this helpful?

  1. Concepts

Clean Architecture

PreviousDDDNextAdvanced

Last updated 4 years ago

Was this helpful?

Monorepo encourages developers to split monolith codebase into microservices and micro-apps, and manage them in single repository so that we can effortlessly keep all sub-modules in sync with consistent dependencies and versions. Developer can share code via lib modules.

Concepts

What's Domain Driven Design about

DDD describes an approach that bridges the gap between requirements for complex software systems on the one hand and a appropriate application design on the other. It can be subdivided into the disciplines Tactical Design and Strategic Design. The former proposes concrete concepts and patterns for an object-oriented design respective architecture. It has an opinionated view on using OOP. As an alternative, there are approaches like Functional Domain Modeling that transfer the ideas behind it into the world of functional programming.

By contrast, strategic design deals with the breakdown of a large system into individual (sub-)domains and their design. No matter if you like DDD's opinionated view or not, some ideas from Strategic Design have proven to be useful for subdividing a system into smaller, self-contained parts

Workspace

Project structure

Shell Library patterns with Nx and Monorepo Architectures

Bounded-Context shell library model

Composite shell library model

Directory structure

References

Shell Library patterns with Nx and Monorepo Architectures
nx-ddd-plugin
ddd-demo
Figure 2. Manfred Steyer shell libraries. Made with https://creately.com
Figure 3. Booking and check-in Composite shell libraries. Made with https://creately.com