A sample Domain-Driven Design and CQRS project built with Kotlin and Spring, demonstrating a layered architecture for order management.
Kotlin DDD Sample is a reference implementation that demonstrates how to build applications using Domain-Driven Design and CQRS patterns with Kotlin. It provides a layered architecture for an order management domain, showcasing command and query separation, event handling, and integration with Spring and Axon Framework. The project serves as an educational tool for developers learning to apply DDD principles in Kotlin-based systems.
Kotlin and Java developers seeking to understand Domain-Driven Design and CQRS patterns, or those looking for a practical example to inspire their own DDD projects. It's also useful for architects designing event-driven, maintainable backend systems.
Developers choose this project because it offers a concrete, runnable example of DDD and CQRS in Kotlin, with clear layer separation and real-world patterns like event-driven communication. It integrates popular frameworks like Spring and Axon, providing a practical reference beyond theoretical documentation.
A sample DDD/CQRS project using KOTLIN :beer:
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements Web, Application, Domain, and Infrastructure layers for clean separation of concerns, as detailed in the architecture overview section of the README.
Demonstrates command and query separation using Axon Framework with diagrams and code examples for an order management domain.
Uses events like shipping notifications to handle side effects between bounded contexts, shown in the payment operation example.
Leverages Spring Boot for dependency injection and web controllers, making it compatible with common Kotlin/Java ecosystems.
The README admits that concrete repositories with JPA are not implemented, using fake instances instead, limiting real-world applicability.
Requires RabbitMQ configuration and additional dependencies, adding overhead for quick starts, as detailed in the setup section with docker commands.
Integrated tests for the web layer are listed in the backlog but not yet provided, reducing learning value for comprehensive testing strategies.