Skip to content

jv-jun23-team5/car-sharing-app

Repository files navigation

Quick Drive Rentals


The Quick Drive Rentals is a cutting-edge RESTful web application designed to meet car rental demands. Built with Spring Boot and Java, the application adheres rigorously to the REST architecture principles, ensuring stateless interactions between clients and the server. An intuitive registration and login flow allow users to access the platform using their credentials. It's important to note that the application employs role-based authorization for both administrators and general users, heightening security.

A standout feature of our service is its smooth integration with the Stripe payment system, offering secure and dependable transactions for every user. This integration facilitates customers in making car rental payments with utmost ease. Moreover, we've incorporated a Telegram bot to relay timely notifications to users about rental status, payments, and any vehicle condition alterations. This feature provides quick access to vital information, elevating the rental experience.

The Quick Drive Rentals emerges as a modern and efficient solution for car rentals, providing speed, safety, and convenience to all its esteemed users.


Technologies & Tools

This web application is built on SpringBoot using a plethora of modern technologies and tools to ensure robustness and scalability, including but not limited to:
- Spring Boot Framework for the backend
- Spring Security for authentication and security
- Spring Data JPA for database interaction
- Swagger for API documentation
- Maven for connect libraries and build the project
- IntelliJ IDEA recommended development enviorment
- Docker for running in an isolated environment on different platforms
- Liquibase for managing database schema changes and tracking revisions
- Spring Testing for conducting tests to ensure the application's correctness and stability
- Stripe for handling secure payment processes and ensuring seamless financial transactions
- Telegram Bots for facilitating real-time communications and enhancing user engagement through instant notifications.


Functionalities


- User registration, login, and role-based authorization: Allows different user levels to have appropriate access and capabilities within the service.

- Multiple endpoints with user and admin access: Enables different functionalities and operations for both users and administrators.

- Integration with Stripe payment service: Offers secure and reliable transactions for car rentals, improving the user experience and trust in the service.

- Telegram bot notifications: Provides users with timely updates about the rental status, payments, and changes in the condition of the cars, ensuring that users are always informed.

- Car booking and management: Enables users to conveniently book, use, and return rental cars, with all the necessary details tracked within the service.


Setup

Getting started with this project is easy. Follow the steps below to set up the project :
Pre required:

Before getting started, make sure you fulfill the following requirements:
0. Install Postman(for make requests to endpoints or using web browser);
1. Installed JDK and IntelliJ IDEA;
2. MySql/PostgresSql or another preferable relational database;
3. Maven (for building the project);
4. Docker (for running project in virtual container);

Running for your local machine:

1. Clone this repository: `git clone https://github.com/jv-jun23-team5/car-sharing-app`.
2. You need to configure application.properties file to connect the database before running the app.
3. Build the project: `mvn clean install`.
4. Run the app: `mvn spring-boot:run`.

Running with Docker in your machine:

0. Install Docker Desktop(Optional): `https://www.docker.com/products/docker-desktop/`.
1. Run command(for running docker image):docker-compose build.
2. Run the docker container: docker-compose up.
3. If you need to stop them(containers): docker-compose down.

While application is running, you can access the Swagger UI for API documentation and testing :
1. Swagger UI URL: http://localhost:8080/swagger-ui.html.


Project Structure

The project follows a 3-layer architecture:

- Presentation layer (controllers).
- Application layer (services).
- Data access layer (repositories).

The project has the following package structure:

- Config: It is responsible for configuring the security rules and access restrictions for different endpoints of the application using the Spring Security framework.

- Controllers: Contains controllers for handling endpoints.

- Dto: Data transfer objects for transferring data between layers.

- Exception: Contains exception classes for handling errors within the project.

- Model: Stores information about entities and their properties.

- Services: Contain business logic of the application.

- Telegram Bot: Designed to inform customers at various stages of interaction with the application.


How to configure Stripe API


- Make a personal duplicate of the Stripe API's collection of requests in your Postman workspace.

- Initiate a copy of the Stripe's environment template in your space, and adjust the "secret key" variable to your Stripe test API key.

- In your Postman collection, replace the placeholder token with your actual test API secret key to set up the required authentication.

- Detail the necessary parameters like product specifics and pricing to create a Stripe checkout session via Postman.

- Upon sending your checkout session request, Postman will provide feedback. Ensure the response status is appropriate (e.g., 200 OK) and you can even preview the generated form within Postman.

- Employ Stripe's Customers API to link transactions to specific clients, aiding in tracking their transactional history.


Authors:

Anton Zhdanov
Dmytro Varukha
Ivan Diatliuk
Oleg Stashkiv
Oleksandr Savenets


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published