Skip to content

Latest commit

ย 

History

History
307 lines (246 loc) ยท 9.03 KB

File metadata and controls

307 lines (246 loc) ยท 9.03 KB

๐Ÿš€ OrderNet Backend - Advanced Features

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.

โœจ Advanced Features

๐Ÿ”ด Redis Caching System

  • High-Performance Caching: Products, users, and session data
  • JWT Token Blacklisting: Secure token revocation
  • TTL Management: Configurable cache expiration
  • JSON Serialization: Efficient data storage

๐Ÿฐ RabbitMQ Messaging

  • Async Email Processing: Non-blocking email delivery
  • User Notifications: Real-time notification system
  • Order Processing: Event-driven order management
  • Message Persistence: Guaranteed delivery

๐Ÿ” Elasticsearch Search

  • 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

๐Ÿ“ง HTML Email Templates

  • Professional Templates: Responsive email designs
  • Dynamic Content: Personalized email content
  • Thymeleaf Integration: Template engine for emails
  • Brand Consistency: OrderNet branding

๐Ÿ“š Swagger/OpenAPI

  • Interactive Documentation: Test APIs directly in browser
  • JWT Authentication: Secure API testing
  • Request/Response Examples: Comprehensive documentation
  • Multi-Environment Support: Dev/prod configurations

๐Ÿงช Comprehensive Testing

  • Unit Tests: Service and component testing
  • Integration Tests: Full API testing
  • TestContainers: Database and service integration
  • Test Profiles: Isolated test environments

๐Ÿ› ๏ธ Technology Stack

Core Technologies

  • 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

Advanced Technologies

  • 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

Testing Technologies

  • JUnit 5: Testing framework
  • Mockito: Mocking framework
  • TestContainers: Integration testing
  • H2: In-memory test database
  • MockMvc: Web layer testing

๐Ÿš€ Quick Start

Prerequisites

  • Java 21+
  • Maven 3.6+
  • Docker & Docker Compose

1. Clone and Setup

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

2. Start Services

# Start all external services
docker-compose up -d

# Start the application
mvn spring-boot:run

3. Access Services

๐Ÿ“‹ API Documentation

Authentication Endpoints

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

User Management

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)

Product Management

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

Cart Management

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

Order Management

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)

๐Ÿ”ง Configuration

Application Properties

# 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

๐Ÿงช Testing

Run Tests

# 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

Test Coverage

  • Unit Tests: Service layer and business logic
  • Integration Tests: API endpoints and database operations
  • TestContainers: External service integration
  • Mock Testing: External dependencies

๐Ÿ“Š Monitoring & Logging

Logging Configuration

logging.level.com.example.demo=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.cache=DEBUG
logging.file.name=logs/ordernet.log

Health Checks

  • 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

๐Ÿš€ Production Deployment

Environment Setup

  1. Database: Configure production MySQL instance
  2. Redis: Set up Redis cluster for high availability
  3. RabbitMQ: Configure RabbitMQ cluster
  4. Elasticsearch: Set up Elasticsearch cluster
  5. SSL/TLS: Configure HTTPS certificates
  6. Monitoring: Set up application monitoring

Performance Optimization

  • Connection Pooling: Optimize database connections
  • Caching Strategy: Implement multi-level caching
  • Load Balancing: Distribute traffic across instances
  • CDN Integration: Optimize static content delivery

๐Ÿ”’ Security Features

Authentication & Authorization

  • JWT Tokens: Stateless authentication
  • Role-Based Access: Admin and user roles
  • Token Blacklisting: Secure logout functionality
  • Password Reset: Email-based password recovery

Data Protection

  • Input Validation: Comprehensive request validation
  • SQL Injection Prevention: Parameterized queries
  • XSS Protection: Input sanitization
  • CSRF Protection: Cross-site request forgery prevention

๐Ÿ“ˆ Performance Metrics

Caching Performance

  • Cache Hit Rate: >90% for frequently accessed data
  • Response Time: <100ms for cached requests
  • Memory Usage: Optimized Redis memory allocation

Search Performance

  • Search Response Time: <200ms for complex queries
  • Index Size: Optimized Elasticsearch indices
  • Query Optimization: Efficient search algorithms

Message Processing

  • Email Delivery: <5 seconds for email processing
  • Queue Processing: High-throughput message handling
  • Error Handling: Robust retry mechanisms

๐Ÿค Contributing

Development Guidelines

  1. Code Style: Follow Java coding standards
  2. Testing: Write comprehensive tests
  3. Documentation: Update API documentation
  4. Security: Follow security best practices
  5. Performance: Optimize for production use

Pull Request Process

  1. Fork the repository
  2. Create a feature branch
  3. Implement changes with tests
  4. Update documentation
  5. Submit pull request

๐Ÿ“ž Support

Documentation

  • API Documentation: Swagger UI interface
  • Feature Documentation: ADVANCED_FEATURES.md
  • Setup Guide: This README

Contact


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.

โšก