Book Social Network is a full-stack application that enables users to manage their book collections and engage with a community of book enthusiasts. This application is built with a microservice architecture to ensure modularity, scalability, and maintainability. It also features real-time notifications powered by WebSockets, allowing users to receive instant updates on activities such as book borrow requests, returns, and feedback. This ensures users stay engaged and informed, creating a dynamic and interactive experience within the book-loving community.
- π User registration and secure email validation
- π Book management: creation, updating, sharing, and archiving
- π Book borrowing with availability checks
- β Book return functionality and approval of returns
- β User feedback and reviews
- π Real-time notifications using WebSocket for updates and interactions
- π Secure authentication and authorization with JWT tokens
- π οΈ Adheres to REST API best practices
- π Observability Stack: Integrated with Prometheus for metrics collection, Tempo for distributed tracing, Zipkin for trace collection, Loki for logging, and Grafana for visualization and monitoring.
The application consists of the following microservices:
- π AUTH-SERVER: Manages user authentication and authorization.
- π BOOK-SERVER: Handles all book-related functionalities, including management and availability checks.
- π¬ FEEDBACK-SERVER: Manages user feedback and reviews for books.
- π TRANSACTIONHISTORY-SERVER: Keeps track of borrowing and return transactions.
- βοΈ CONFIG-SERVER: Centralized configuration management for all microservices.
- π GATEWAY-SERVER: Acts as an entry point to the system, routing requests to appropriate microservices.
- π DISCOVERY-SERVER: Enables service discovery, allowing microservices to locate each other.
- π NOTIFICATION-SERVER: Provides real-time notifications via WebSocket for user actions, such as borrowing and returning books.
- β Spring Boot 3
- π Spring Security 6
- π JWT Token Authentication
- ποΈ Spring Data JPA
- π‘οΈ JSR-303 and Spring Validation
- π OpenAPI and Swagger UI Documentation
- π³ Docker
- βοΈ GitHub Actions
- π’ Spring Cloud Netflix Eureka (Service Discovery)
- ποΈ Spring Cloud Config (Centralized Configuration)
- π Spring Cloud Gateway (API Gateway)
- π Spring Cloud Zipkin (Tracing and Monitoring)
- ποΈ Spring Cloud OpenFeign (Declarative REST Client)
- πΎ MySQL (Database)
- π‘ WebSocket for real-time communication
- π Spring Cloud Zipkin (Tracing and Monitoring)
- π Tempo (Distributed Tracing)
- π Loki (Log Aggregation)
- π Prometheus (Monitoring and Metrics Collection)
- π Grafana (Data Visualization)
- π Angular 17
- π¨ Bootstrap for styling
- β³ Lazy Loading
- π Authentication Guard
- π OpenAPI Generator for Angular
- π rxjs for reactive programming
- π sockjs-client and stompjs for WebSocket communication