Ecommerce Platform is a pet project built with a microservices architecture using Spring Boot and React. The platform includes multiple services for handling core functionality, payments, and notifications. It uses MySQL for data persistence, Kafka for event streaming, and Redis for caching. The platform features JWT-based authentication and supports 3 languages:
- English
- Romanian
- Russian
The platform consists of the following microservices:
- Main Server: Core ecommerce functionality (products, users, orders)
- Payment Service: Handles payment processing
- Notification Service: Manages notifications and messaging
- UI: React-based frontend with Vite and hot module replacement
Infrastructure components:
- Nginx: Reverse proxy with rate limiting
- MySQL: Primary database
- Kafka: Event streaming for inter-service communication
- Redis: Caching and session management
- Docker
- Docker Compose
The development environment includes hot reload support for all services:
Before starting, configure your environment variables in development/docker-compose.yml:
- JWT_SECRET: Your secret key for JWT token generation
- STRIPE_API_KEY: Your Stripe API key for payment processing
- Mail Properties: SMTP configuration for email notifications
MAIL_HOSTMAIL_PORTMAIL_USERNAMEMAIL_PASSWORD
cd development
docker-compose up --buildAccess the application at http://localhost
- Hot Reload: All Java services use Spring Boot DevTools for automatic reloading (~8-10s)
- Vite HMR: Frontend updates instantly (~1s)
- Remote Debugging: Port 5005 exposed for IDE debugging
- Volume Mounts: Source code changes reflected immediately
For more details, see development/README.md
# Stop and remove containers
docker-compose down
# Stop and remove containers + volumes (deletes DB data)
docker-compose down -vEcommerce Platform includes a separate module for Selenium integration tests located in ecommerce-platform/ecommerce-platform-it.
To run integration tests:
- Make sure the development environment is running (
docker-compose up) - Configure
ecommerce-platform-it\src\test\resources\it-test.properties:
db.url=jdbc:mysql://localhost:3306/ecommerce-platform
db.username=root
db.password=1234