RequestSystem is a microservice-based system that allows users to manage friendship interactions. It provides endpoints for sending, accepting, declining, and deleting friend requests, along with listing friends and incoming requests. The system features user authentication, inter-service communication via RabbitMQ, and caching using Redis.
- Send friend requests
- Accept or decline incoming requests
- Remove friends from the list
- Retrieve lists of friends and pending requests
- User registration and login
- JWT token generation and validation
- Role-based access control
- Shared models and utility classes for reuse across services
- Notification dispatching via RabbitMQ
ApiGateway# Entry point for routing and forwardingAuthService# Handles authentication and authorizationCommon# Contains shared models/utilitiesFriendShipService# Core friendship featuresNotifyService# Notification handlerdocker-compose.yml# Docker orchestration for all services
- Java 17 + Spring Boot
- Spring Security / Web / Data JPA
- PostgreSQL — persistent storage
- RabbitMQ — asynchronous messaging
- Redis — in-memory cache
- WebSockets, STOMP - notifications
- Docker / Docker Compose — containerization and service orchestration
All endpoints are prefixed with /friendship in the FriendShipService.
POST /request/{receiver}– send friend requestPUT /accept/{sender}– accept requestPUT /decline/{sender}– decline requestGET /friends– get friend listGET /requests– list incoming friend requestsDELETE /delete/{friend}– remove a friend
- Docker & Docker Compose installed
- Java 17 (for manual builds)
./gradlew build
docker-compose up --build