E-Taberna is a modern e-commerce web application built using a microservices architecture. The name "Taberna" is derived from the Latin word for "tavern" or "shop", historically referring to a place where goods were bought and sold. Inspired by this, e-Taberna is designed as a digital marketplace that facilitates seamless transactions and shopping experiences.
The project follows a microservices-based design, where each service is responsible for a specific domain within the e-commerce platform.
- .NET Core 9 for backend services
- YARP for API Gateway
- RabbitMQ for message-based communication
- gRPC for inter-service communication
- SQL Server for data persistence
Contains shared modules such as Messaging, which provides communication mechanisms between microservices.
Contains YARP Gateway, which acts as the API gateway for routing requests between services.
Independent microservices handling different domains of the application:
- Handles user authentication and authorization.
- Uses JWT and .NET Identity for security.
- Manages orders, order processing, and status updates.
- Handles payments via Stripe.
- Publishes RabbitMQ events on successful payment.
- Manages discounts and promotional codes.
- Integrates with Stripe for coupon creation.
- Exposes a gRPC service for other microservices to validate and apply coupons.
- Handles cart management (adding, updating, and removing items).
- Acts as a gRPC client for the Coupon Service to validate and apply discounts.
- Consumes RabbitMQ events from Order Service to delete the cart on successful payment.
- Manages product listings, categories, and inventory.
- Consumes RabbitMQ events from Order Service to update inventory on successful payment.
Clone the e-Taberna project to your local machine:
git clone https://github.com/nevein25/e-taberna
cd e-taberna
Each microservice requires specific configurations, including database connections, authentication settings, and external service URLs.
You can find detailed setup instructions for each microservice in their respective README files: