β 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.
- Developed a cloud-native application using .NET Aspire
- Implemented Vertical Slice Architecture with Domain-Driven Design & CQRS
- Enabled service-to-service communication with gRPC
- Incorporated various microservices patterns
- Utilized outbox and inbox patterns to manage commands and events
- Implemented saga patterns for orchestration and choreography
- Integrated event sourcing for storing domain events
- Implemented a microservices chassis for cross-cutting concerns and service infrastructure
- Implemented API versioning and feature flags for flexible application management
- Set up AuthN/AuthZ with Keycloak
- Implemented caching with HybridCache
- Incorporated AI components:
- Text embedding with Nomic Embed Text
- Integrated a chatbot using Gemma 3
- Standardized AI tools with MCP Tools
- Configured CI/CD with GitHub Actions
- Created comprehensive documentation:
- Used OpenAPI for REST API & AsyncAPI for event-driven endpoints
- Utilized EventCatalog for centralized architecture documentation
- Established a testing strategy:
- Conducted service unit tests
- Established architecture testing strategy
- Performed load testing with k6
- Planned integration tests
Important
AI components require an Nvidia GPU for local development. Email services use SendGrid in production and Mailpit locally.
-
Clone the repository
git clone [email protected]:foxminchan/BookWorm.git
-
Change directory to the repository
cd BookWorm
-
Run the application
make run
Warning
Docker or Podman must be running on your machine before starting the application.
For detailed deployment instructions, please consult the deployment guide.
Explore our event catalog for messaging patterns and API details.
Contributions are welcome! Please read the contribution guidelines and code of conduct to learn how to participate.
- If you like this project, please give it a β star.
- If you have any issues or feature requests, please create an issue.
This project is licensed under the MIT License - see the LICENSE file for details.