This is a full-stack e-commerce application based on a microservice architecture. It implements an event-driven approach for handling user interactions, leveraging event sourcing. The backend includes microservices (CustomerService, ProductService) that communicate via REST APIs. User interactions are captured as events and persisted to a kafka topic that meant to be fiched by the pageEventService and petsit to mongo database .
Each microservice is developed with Spring Boot and offers a RESTful API. They utilize Spring Data MongoDB for data persistence and Spring Cloud Stream Functions for event-driven communication.
-
CustomerService
- Functionality: Manages customer data and shopping carts. Persists user interactions as events.
-
ProductService
- Functionality: Manages product data, including CRUD operations. Persists user interactions as events.
-
PageEventService
- Functionality:
- Subscribes to a Kafka topic to fetch user interaction event as (PageEvent) object
- Persists PageEvent objects fetched from Kafka to a MongoDB database.
- Functionality:
- Technology: Angular
- State Management: ngRx
-
Integrated with Keycloak for authentication and authorization.
-
Secures both the backend microservices and the frontend application , in fact addapter were added to both backend microservices (with spring security) and frontend
The application is deployed in a local kubernetes cluser with: