RentalService is a web application that allows users to browse available properties, make reservations for rentals or place offers to purchase properties.
Firsty, needs to initialize the mail system setting up the spring.mail.username, spring.mail.password params with your own values in both .properties file.
Secondly, fill up the firebase.json file and firebase.bucket.name from your Firebase account to have an ability to store images.
To run the application, you need to install the following programs:
- Java 11
- Docker
- Docker Compose
To run the application, follow these steps:
- Clone the repository:
git clone https://github.com/SadCryFamily/rentalService.git
- Navigate to the project directory:
cd rentalService- Build the application:
./mvnw clean package -DskipTests- Run the application in a multiple Docker containers:
docker-compose up -d --build
The application will be launched in multiple Docker containers: one container for the Spring Boot application, one for PostgreSQL database and one more with Redis database.
After the application starts, it will be available at http://localhost:8080.
The application allows users to browse available properties, make reservations for rentals, place offers to purchase properties, and view their reservation and offer status. Users can also create and customize their own profiles and manage their orders.
The project also includes user authentication and registration features. Users can register for a new account, log in with their credentials, and receive an access token to make authorized requests to the API.
Please note that at the moment there is no moderation of orders or changes, so users can freely buy or rent properties and customize their profiles and orders without any approval process. The moderation of orders and changes will be added in the future version of the application.
RentalService was created using the following technologies:
- Java
- Spring Boot (Data, JPA, Security)
- Liquibase
- PostgreSQL
- Firebase Storage
- Redis
- Docker
- Docker Compose
The application provides the following endpoints:
POST /signup- Register a new customerPOST /activate- Activate new customerPOST /signin- Authenticate a user and generate an access token (Unavailable while do not activate accout)POST /resend-activation-code- Re-send activation code if first was expired
GET /profile- Retrieve a customer profilePUT /profile- Update existing customer account dataDELETE /profile- Delete customer account
POST /rental- Create new rentalGET /rentals- Retrieve set of all available rentalsGET /rental/?id=1- Retrieve specified rental by1paramGET /my- Retrieve set of all customer rentalsPUT /rental?id=1- Update exising rental by1param (Update only customer created rentals)DELETE /rental/?id=1- Delete rental by1param (Delete only customer created rentals)