A comprehensive e-commerce backend built with Spring Boot 3.5.6, featuring enterprise-grade capabilities including Redis caching, RabbitMQ messaging, Elasticsearch search, HTML email templates, and comprehensive testing.
- High-Performance Caching: Products, users, and session data
- JWT Token Blacklisting: Secure token revocation
- TTL Management: Configurable cache expiration
- JSON Serialization: Efficient data storage
- Async Email Processing: Non-blocking email delivery
- User Notifications: Real-time notification system
- Order Processing: Event-driven order management
- Message Persistence: Guaranteed delivery
- Full-Text Search: Advanced product search capabilities
- Fuzzy Matching: Intelligent search with typo tolerance
- Faceted Search: Filter by category, price, availability
- Auto-Complete: Search suggestions and recommendations
- Professional Templates: Responsive email designs
- Dynamic Content: Personalized email content
- Thymeleaf Integration: Template engine for emails
- Brand Consistency: OrderNet branding
- Interactive Documentation: Test APIs directly in browser
- JWT Authentication: Secure API testing
- Request/Response Examples: Comprehensive documentation
- Multi-Environment Support: Dev/prod configurations
- Unit Tests: Service and component testing
- Integration Tests: Full API testing
- TestContainers: Database and service integration
- Test Profiles: Isolated test environments
- Spring Boot 3.5.6: Main framework
- Java 21: Programming language
- Maven: Build and dependency management
- MySQL 8.0: Primary database
- JPA/Hibernate: ORM framework
- Redis 6.0: Caching and session storage
- RabbitMQ 3.8: Message queuing
- Elasticsearch 8.0: Search engine
- Thymeleaf: Email template engine
- Swagger/OpenAPI 3.0: API documentation
- JUnit 5: Testing framework
- Mockito: Mocking framework
- TestContainers: Integration testing
- H2: In-memory test database
- MockMvc: Web layer testing
- Java 21+
- Maven 3.6+
- Docker & Docker Compose
git clone <repository-url>
cd OrderNet-Backend
# Make setup script executable (Linux/Mac)
chmod +x setup-dev.sh
./setup-dev.sh
# Or run on Windows
setup-dev.bat# Start all external services
docker-compose up -d
# Start the application
mvn spring-boot:run- Application: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- RabbitMQ Management: http://localhost:15672 (guest/guest)
- MailHog (Email Testing): http://localhost:8025
- Elasticsearch: http://localhost:9200
POST /api/auth/register - User registration
POST /api/auth/login - User login
POST /api/auth/logout - User logout
POST /api/auth/refresh - Refresh JWT token
POST /api/auth/reset-password - Request password reset
POST /api/auth/confirm-reset - Confirm password reset
GET /api/users - Get all users (Admin)
POST /api/users - Create user (Admin)
GET /api/users/{id} - Get user by ID (Admin)
PUT /api/users/{id} - Update user (Admin)
DELETE /api/users/{id} - Delete user (Admin)
GET /api/users/email/{email} - Get user by email (Admin)
GET /api/users/active - Get active users (Admin)
GET /api/users/search - Search users by name (Admin)
GET /api/products - Get all products
POST /api/products - Create product (Admin)
GET /api/products/{id} - Get product by ID
PUT /api/products/{id} - Update product (Admin)
DELETE /api/products/{id} - Delete product (Admin)
GET /api/products/search - Search products
GET /api/products/category/{categoryId} - Get products by category
GET /api/carts - Get user's cart
POST /api/carts/items - Add item to cart
PUT /api/carts/items/{productId} - Update cart item
DELETE /api/carts/items/{productId} - Remove item from cart
DELETE /api/carts - Clear cart
GET /api/orders - Get user's orders
POST /api/orders/checkout - Create order from cart
GET /api/orders/{id} - Get order by ID
PUT /api/orders/{id}/status - Update order status (Admin)
DELETE /api/orders/{id} - Cancel order
GET /api/orders/admin - Get all orders (Admin)
# Database
spring.datasource.url=jdbc:mysql://localhost:3306/ordernet_db
spring.datasource.username=root
spring.datasource.password=password
# Redis
spring.data.redis.host=localhost
spring.data.redis.port=6379
# RabbitMQ
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
# Elasticsearch
spring.elasticsearch.uris=http://localhost:9200
# JWT
jwt.secret=your-secret-key
jwt.expiration=86400000
jwt.refresh.expiration=604800000
# Email
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password# Run all tests
mvn test
# Run specific test class
mvn test -Dtest=UserServiceTest
# Run integration tests
mvn test -Dtest=*IntegrationTest
# Run with test profile
mvn spring-boot:run -Dspring.profiles.active=test- Unit Tests: Service layer and business logic
- Integration Tests: API endpoints and database operations
- TestContainers: External service integration
- Mock Testing: External dependencies
logging.level.com.example.demo=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.cache=DEBUG
logging.file.name=logs/ordernet.log- Application Health:
/actuator/health - Database Health: Connection and query performance
- Redis Health: Cache connectivity and performance
- RabbitMQ Health: Message queue status
- Elasticsearch Health: Search service availability
- Database: Configure production MySQL instance
- Redis: Set up Redis cluster for high availability
- RabbitMQ: Configure RabbitMQ cluster
- Elasticsearch: Set up Elasticsearch cluster
- SSL/TLS: Configure HTTPS certificates
- Monitoring: Set up application monitoring
- Connection Pooling: Optimize database connections
- Caching Strategy: Implement multi-level caching
- Load Balancing: Distribute traffic across instances
- CDN Integration: Optimize static content delivery
- JWT Tokens: Stateless authentication
- Role-Based Access: Admin and user roles
- Token Blacklisting: Secure logout functionality
- Password Reset: Email-based password recovery
- Input Validation: Comprehensive request validation
- SQL Injection Prevention: Parameterized queries
- XSS Protection: Input sanitization
- CSRF Protection: Cross-site request forgery prevention
- Cache Hit Rate: >90% for frequently accessed data
- Response Time: <100ms for cached requests
- Memory Usage: Optimized Redis memory allocation
- Search Response Time: <200ms for complex queries
- Index Size: Optimized Elasticsearch indices
- Query Optimization: Efficient search algorithms
- Email Delivery: <5 seconds for email processing
- Queue Processing: High-throughput message handling
- Error Handling: Robust retry mechanisms
- Code Style: Follow Java coding standards
- Testing: Write comprehensive tests
- Documentation: Update API documentation
- Security: Follow security best practices
- Performance: Optimize for production use
- Fork the repository
- Create a feature branch
- Implement changes with tests
- Update documentation
- Submit pull request
- API Documentation: Swagger UI interface
- Feature Documentation: ADVANCED_FEATURES.md
- Setup Guide: This README
- Email: support@ordernet.com
- Issues: GitHub Issues
- Documentation: Project Wiki
OrderNet Backend - Enterprise-grade e-commerce solution with advanced features for scalability, performance, and maintainability.
Built with โค๏ธ using Spring Boot, Redis, RabbitMQ, Elasticsearch, and modern Java technologies.