# codelytv/typescript-ddd-example

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/codelytv-typescript-ddd-example).**

1,473 stars · 231 forks · TypeScript

## Links

- GitHub: https://github.com/CodelyTV/typescript-ddd-example
- Homepage: https://pro.codely.tv/library/ddd-typescript/375662/about/
- awesome-repositories: https://awesome-repositories.com/repository/codelytv-typescript-ddd-example.md

## Topics

`codely` `codelytv` `cqrs` `ddd` `ddd-architecture` `ddd-cqrs` `ddd-example` `ddd-sample` `dddesign` `domain-driven-design` `eda` `event-driven-architecture` `hexagonal-architecture` `javascript` `mongodb` `nodejs` `rabbitmq` `software-architecture` `ts` `typescript`

## Description

This project is a reference implementation for building scalable applications in TypeScript using Domain-Driven Design. It provides a structured codebase template that organizes business logic through tactical design patterns and strategic modeling to ensure the software reflects specific business requirements.

The architecture utilizes a hexagonal pattern to isolate core business logic from external infrastructure concerns such as databases and delivery mechanisms. It implements Command Query Responsibility Segregation to separate data modification operations from information retrieval tasks, and employs a domain event orchestrator to decouple system components.

These patterns facilitate an event-driven approach where asynchronous domain events are broadcast to trigger background workflows. By applying the dependency inversion principle, the implementation ensures that high-level business rules remain independent of low-level technical details.

## Tags

### Software Engineering & Architecture

- [Hexagonal Architectures](https://awesome-repositories.com/f/software-engineering-architecture/hexagonal-architectures.md) — Organizes code into concentric layers where core business logic remains independent of external frameworks and infrastructure concerns.
- [Domain-Driven Designs](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/abstraction-domain-modeling/domain-driven-designs.md) — Provides a reference implementation for building scalable applications using DDD, Hexagonal Architecture, and CQRS.
- [Command Query Responsibility Segregation](https://awesome-repositories.com/f/software-engineering-architecture/command-query-responsibility-segregation.md) — Implements architectural separation of data modification commands from information retrieval queries to optimize system performance.
- [Hexagonal Architecture Implementations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/decoupled-architectures/hexagonal-architecture-implementations.md) — Organizes code into concentric layers to isolate core business logic from external infrastructure concerns.
- [Event Bus Systems](https://awesome-repositories.com/f/software-engineering-architecture/event-bus-systems.md) — Provides an internal event-driven architecture for decoupling system components through asynchronous message mediation.
- [Event-Driven Architectures](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures.md) — Broadcasts domain events to trigger background processes while maintaining loose system coupling.
- [Dependency Inversion Patterns](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/dependency-boundary-enforcers/dependency-inversion-patterns.md) — Applies dependency inversion to decouple high-level business rules from low-level infrastructure implementations like databases.
- [Tactical Design Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/abstraction-domain-modeling/domain-driven-designs/tactical-design-patterns.md) — Organizes business logic using tactical design patterns to ensure software reflects specific business requirements.
- [Command Query Separation](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/structural-design-paradigms/command-query-separation.md) — Segregates data modification commands from retrieval queries to simplify business logic maintenance. ([source](https://github.com/codelytv/typescript-ddd-example#readme))

### Artificial Intelligence & ML

- [CQRS Patterns](https://awesome-repositories.com/f/artificial-intelligence-ml/ai-powered-data-assistants/read-only-database-querying/read-write-node-separations/cqrs-patterns.md) — Separates data modification commands from retrieval queries to improve system performance and maintainability.

### Development Tools & Productivity

- [Event-Driven Workflow Initiators](https://awesome-repositories.com/f/development-tools-productivity/event-driven-workflow-triggers/event-driven-workflow-initiators.md) — Dispatches domain events to initiate background processes and side effects across the system. ([source](https://github.com/codelytv/typescript-ddd-example#readme))

### Networking & Communication

- [Domain Event Emitters](https://awesome-repositories.com/f/networking-communication/pub-sub-systems/domain-event-emitters.md) — Orchestrates the broadcasting of asynchronous domain events to decouple application components.
