⭐ BookWorm demonstrates the practical implementation of .NET Aspire in a cloud-native application. The project employs Domain-Driven Design (DDD) and Vertical Slice Architecture to organize the codebase effectively.
- Build a cloud-native application with
.NET Aspire
- Implement
Vertical Slice Architecture
for codebase organization - Apply
Domain-Driven Design
principles - Implement
CQRS
pattern withMediatR
- Utilize
RabbitMQ
withMassTransit
for messaging - Implement
gRPC
for service-to-service communication - Implement
Saga
patterns (Orchestration & Choreography) withMassTransit
- Implement
Event Sourcing
- Implement
Outbox Pattern
andInbox Pattern
for messaging - Support API versioning
- Implement comprehensive health checks
- Provide
OpenAPI/Scalar
documentation - Enable feature flags to control application behavior
- Implement AuthN/AuthZ with
Keycloak
- Enable observability with
.NET Aspire
- Integrate
Mailpit
for local email testing - Integrate with
DeepSeek R1
&Nomic Embed Text
- Text embedding with
Nomic Embed Text
- Support hybrid search with
Qdrant
- Chatbot integration with
DeepSeek R1
- Text embedding with
- Create EDA documentation with
EventCatalog
andAsyncAPI
- Configure CI/CD with
GitHub Actions
- Deploy with
Aspirate
onk3d
- Implement testing strategy
- Service unit tests
- Integration tests
BookWorm is structured as a microservices-based application with the following services:
- Catalog: Book inventory management with search and pagination
- Basket: Shopping cart functionality
- Ordering: Order processing and fulfillment
- Identity: User authentication and profile management
- Notification: Email notification services (Worker Service)
- Rating: Book review and rating system
- Finance: Orchestration service for basket reservation and order processing
Important
In this project, we use DeepSeek R1 & Nomic Embed Text. So, you must have an Nvidia GPU to run the application.
In Production, we use SendGrid for email services. But, for local development, we use Mailpit.
-
Clone the repository
git clone git@github.com:foxminchan/BookWorm.git
-
Change directory to the repository
cd BookWorm
-
Run the application
make run
Warning
Docker must be running on your machine before starting the application.
There are two ways to deploy the application to a Kubernetes cluster using Aspirate
:
-
Method 1: Deploy to
Azure Kubernetes Service (AKS)
:bash ./deploys/scripts/deploy.sh
-
Method 2: Deploy to
k3d
:dotnet aspire apply --non-interactive -p ./src/BookWorm.AppHost
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us. Thank you for contributing to BookWorm!
- If you like this project, please give it (⭐) a star.
- If you have any issues or feature requests, please open an issue.
This project is licensed under the MIT License - see the LICENSE file for details.