# Introduction

`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

{% hint style="info" %}
Shell Library patterns with Nx and Monorepo Architectures
{% endhint %}

Bounded-Context shell library model

![Figure 2. Manfred Steyer shell libraries. Made with https://creately.com](/files/-M1vqEx4RCSP_-q_G327)

Composite shell library model

![Figure 3. Booking and check-in Composite shell libraries. Made with https://creately.com](/files/-M4lk09c_312GI5p0dMN)

### Directory structure

```
```

## References

* [Shell Library patterns with Nx and Monorepo Architectures](https://indepth.dev/the-shell-library-patterns-with-nx-and-monorepo-architectures/)
* [nx-ddd-plugin](https://github.com/angular-architects/nx-ddd-plugin/tree/master/libs/ddd)
  * [ddd-demo](https://github.com/angular-architects/ddd-demo)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xmlking.gitbook.io/yeti/concepts/monorepo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
