Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rafaelmagalhaesguedes/rentalbackendchallenge
Backend with Spring Boot for managing clients, reservations, accessory rentals, and vehicle groups within a car rental service.
https://github.com/rafaelmagalhaesguedes/rentalbackendchallenge
docker java junit5 microservices mockito-junit-test mysql nginx nodejs rabbitmq reactjs spring-security springboot stripe-payments typescript
Last synced: about 2 months ago
JSON representation
Backend with Spring Boot for managing clients, reservations, accessory rentals, and vehicle groups within a car rental service.
- Host: GitHub
- URL: https://github.com/rafaelmagalhaesguedes/rentalbackendchallenge
- Owner: rafaelmagalhaesguedes
- Created: 2024-06-25T18:29:32.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T10:58:21.000Z (4 months ago)
- Last Synced: 2024-09-09T13:04:43.954Z (4 months ago)
- Topics: docker, java, junit5, microservices, mockito-junit-test, mysql, nginx, nodejs, rabbitmq, reactjs, spring-security, springboot, stripe-payments, typescript
- Language: Java
- Homepage:
- Size: 3.43 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Rental BackEnd Challenge
This project is a comprehensive Backend designed for a car rental service. It includes a robust API for managing clients, reservations, accessory rentals, and vehicle groups. The system integrates with the Stripe payment gateway to facilitate secure online transactions. Additionally, it features a microservices architecture to handle email communication efficiently, using message queues to ensure reliability and scalability.
## Technologies Used
- Spring Boot: Framework for developing Java applications.
- Spring AMQP (RabbitMQ): Integration with RabbitMQ for asynchronous email sending.
- JUnit 5: Unit and integration testing.
- Stripe API: Integration with the Stripe API for payment processing.
- SpringDoc OpenAPI: API documented with SpringDoc OpenAPI Swagger.
- NGINX: Web server and reverse proxy.
- Docker: Services use Docker containers for their lifecycle.
## Main Features
- Authentication and Authorization: User authentication and role-based authorization (ADMIN, MANAGER, and USER).
- Reservation Management: Register and manage accessory reservations for individuals or vehicle groups.
- Person Management: Create, list, update, and delete information about individuals, including clients and employees.
- Accessory Management: Create, list, update, and delete accessories available for rental.
- Vehicle Group Management: Create, list, update, and delete vehicle groups.
- Stripe Integration: Allows users to pay for reservations using credit/debit cards through Stripe.
## Email Sending Microservice
The system includes a microservice for sending emails, utilizing queues for asynchronous processing and ensuring email delivery. The microservice is responsible for:
- Asynchronous Email Sending: Sending emails asynchronously to avoid blocking during the execution of other tasks.
- Failure Handling: Robust and efficient handling of email sending failures.
- RabbitMQ Configuration: Using RabbitMQ for queue management and ensuring email delivery.
- Uses Cloud AMQP: Provides cloud-hosted messaging infrastructure, ensuring high availability, scalability, and performance for RabbitMQ queues.
## Installation
1. Clone the Repository
```
git clone
```2. Configure the environment variables in application-properties
3. Backend setup
- Build and run Docker containers
```
docker compose up -d
```