Spring Ecommerce
About
This project is a comprehensive e-commerce application built using a microservices architecture. It leverages Spring Boot for backend services, with each service being responsible for a specific domain in the application.
Features
-
Microservices Architecture: Each service is independently deployable and scalable.
-
Spring Cloud: Utilized for service discovery and configuration management.
-
JWT Authentication: Secure user authentication.
-
Kafka: For event-driven communication between services.
-
Docker & Kubernetes: Containerization and orchestration.
-
Monitoring: Implemented with Grafana and VictoriaMetrics.
Microservices
-
API Gateway: Centralized entry point for client requests.
-
Auth Service: Handles user authentication and authorization.
-
Product Service: Manages product data.
-
Order Service: Manages customer orders.
-
Payment Service: Handles payment processing.
-
Inventory Service: Manages product inventory.
-
Notification Service: Sends notifications to users.
-
Analytics Service: Provides analytical insights.
-
Config Server: Centralized configuration management.
-
Eureka Server: Service registry.
Technologies Used
-
Java: Programming language.
-
Spring Boot: Application framework.
-
Spring Cloud: Microservices framework.
-
Docker: Containerization.
-
Kubernetes: Container orchestration.
-
PostgreSQL: Relational database.
-
MongoDB: NoSQL database.
-
Kafka: Event streaming platform.
-
Keycloak: Identity and access management.
-
Grafana & VictoriaMetrics: Monitoring and observability.
Getting Started
Prerequisites
- Docker
- Kubernetes
- Java 11+
- Maven
Installation
-
Clone the repository:
git clone https://github.com/nomadbala/spring-ecommerce.git
cd spring-ecommerce
-
Build the project:
mvn clean install
-
Run Docker containers:
docker-compose up -d
-
Deploy to Kubernetes:
kubectl apply -f kubernetes/
Usage
- Access the application via the API Gateway at
http://localhost:8080
.
- Use Swagger UI for API documentation and testing.
Contributing
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
).
- Make your changes.
- Commit your changes (
git commit -m 'Add new feature'
).
- Push to the branch (
git push origin feature-branch
).
- Create a new Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
- Spring Team for their excellent frameworks.
- Docker and Kubernetes communities for containerization and orchestration tools.
- Contributors and developers for their continuous support.