⭐ This repository includes the backend of the parking control system.
The project was developed in Java with Spring Boot in accordance with multi-layer architecture and SOLID principles. PostgreSQL was used for database in the project. The project includes CRUD operations for car park, owner, park layout, user, park rental, rental detail.
There are two types of users in the parking control system. Parking lot owners can define their businesses to the system. Users can rent parking spaces for their vehicles by registering with the system. The system, performs all operations related to the "user, the owner of the parking lot, the parking lot, the arrangement of the parking lot and the rental". Parking lot identification is done according to certain business rules. The owner of the car park must provide a valid capacity information when registering his car park in the system. According to the given capacity information, the system automatically creates the parking lot as A1, A2, ... , A10, B1, B2, ... , B10, ... and saves it to the parking layout table in the database. Parking lot rental is also carried out according to certain business rules. The system allows renting after checking whether the desired parking lot is occupied or not. When exiting the parking lot after the rental ends, the end date for the rental is updated. The system calculates the total amount according to the end date of the lease and records it in the rental detail table.
Features such as authentication authorization, payment service, reporting of an owner's car parks, rental reporting for businesses will be included in the project.
- Java
- Spring Framework
- PostgreSql
- Layered Architecture Design Pattern
- AOP
- JWT
- IOC
N-tier application architecture provides a flexible and reusable application model. For this reason, Layered Architecture Design Pattern was used in the parking control system.
In this layer, the main classes to be used in the project are specified, that is, it is where the real objects are specified.
📂 Concrete folder: Each of the classes in the concrete folder corresponds to a table in the database.
📂 DTOs folder: Each of the classes in the DTOs folder contains DTO (Data Transfer Object) classes into which data from different tables are combined.
In this layer, database operations are performed. The task of this layer is to perform database CRUD operations.
📂 Abstract folder: Abstract objects are found
It is the layer where business rules are defined and controlled, that will take the data taken into the project by Data Access and process it. When a command comes to the program, what actions it should perform and which set of rules it should pass through are defined here. The data from the user first goes to the Business layer, and then processed and transferred to the Data Access layer. Business layer also specifies who will access these data.
📂 Abstract folder: Services have abstract objects
📂 Concrete folder: There are concrete service objects
It is a universal layer with common codes. The core layer does not reference other layers, it is independent of the project. Items to be used in the core layer are classified according to other layers and their intended use.
📂 Utilities folder:
📖 Web API
It is the part where the services that enable the Front-End part and other platforms to communicate with the program and perform operations are written.
Java 11
Springframework 2.5.2
Spring Boot DevTools
Lombok
Spring Web
Spring Data JPA
PostgreSQL Driver
Swagger 3.0.0
Seda Nur Gülocak
Eda Dener
Kübra Daşkın
Merve Erkuş