RentIT is a modern equipment rental platform built using microservices architecture. The system enables users to browse available equipment, create rentals, and manage rental history, while services communicate through an event-driven architecture (RabbitMQ).
The platform focuses on scalability, reliability, and maintainability using Clean Architecture principles.
- User registration & authentication (JWT)
- Browse available equipment
- Create and manage rentals
- Rental history tracking
- Availability validation before booking
- Review and rating system
- Secure access to protected endpoints
- Distributed caching for faster rental queries
- RESTful API structure
- User registration & login
- JWT token generation
- Identity management with ASP.NET Core Identity
- Role-based authorization
- Equipment catalog management
- CRUD operations for equipment
- Availability tracking
- Integration with Rental Service
- Event publishing to message broker
- Rental lifecycle management
- Reservation validation
- Overdue tracking with penalty calculation
- Redis caching for performance
- Integration with Equipment and User services
- Equipment reviews and ratings
- Review aggregation
- Feedback management
- Event-based communication with other services
- Single entry point for all requests
- Request routing to microservices
- JWT validation
- Centralized authentication
- Aggregation of responses from multiple services
- ASP.NET Core 9
- Entity Framework Core 9
- PostgreSQL
- Ocelot API Gateway
- RabbitMQ
- Redis
- Polly (Retry & Circuit Breaker policies)
- Docker
- Docker Compose
- Visual Studio Container Tools
RentIT is designed as a distributed microservices system where each service is responsible for a specific business domain.
Services communicate synchronously via HTTP and asynchronously using RabbitMQ events, ensuring loose coupling and high scalability.
Key architectural characteristics:
- Independent databases per service
- API Gateway as single entry point
- Event-driven communication between services
- Fault tolerance with retry and circuit breaker policies
- Scalable container-based deployment
Main services:
- User Service
- Equipment Service
- Rental Service
- Review Service
- API Gateway
- RabbitMQ (message broker)
- Redis (cache)
- Clone repository
git clone https://github.com/TheCrudClapper/RentIT.gitthencd RentIT - Make sure that docker is up and running
- Run containers via
docker-compose up -d - Verify services
- API Gateway:
http://localhost:5050 - User Service:
http://localhost:5000/swagger - Equipment Service:
http://localhost:5002/swagger - Rental Service:
http://localhost:5004/swagger - Review Service:
http://localhost:5006/swagger
- API Gateway: