ReCapProject
N-Layer Architecture Car Rental project with NetCore.
Install / Use
/learn @ahmet-cetinkaya/ReCapProjectREADME
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]
<br /> <p align="center"> <a href="https://github.com/ahmet-cetinkaya/ReCapProject"> <img src="https://user-images.githubusercontent.com/53148314/110218503-2f2ef700-7ecb-11eb-9753-6f760c72511e.png" alt="ReCap Project"> </a> <h2 align="center">ReCapProject</h2> <p align="center"> Car Rental project with N-Layer Architecture. <br /> <br /> <a href="https://github.com/ahmet-cetinkaya/ReCapProject/issues">Report Bug</a> · <a href="https://github.com/ahmet-cetinkaya/ReCapProject/issues">Request Feature</a> </p> </p>About The Project
Built With
Specifications
<details> <summary>Toggle Content</summary>Cars
Public Operations
- Get all cars
- Searching Cars By Brand, Color
- Caching
- Get a single car
- Caching
Private Operations
- Add a New Car
- Authorized users only
- Field validation
- Edit a Car
- Authorized users only
- Field Validation
- Delete a Car
- Authorized users only
Car Images
Public Operations
- Get a car image
- Caching
- Get all
- Searching Car Image By Car
- Caching
Private Operations
- Add (Upload) a New Car Image
- Authorized users only
- Save on Disk
- Edit a Car Image
- Authorized users only
- Edit on Disk
- Delete a Car Image
- Authorized users only
- Delete on Disk
Brands
Public Operations
- Get all brands
- Get a brand
Private Operations
- Add a Brand
- Authorized users only
- Edit a Brand
- Authorized users only
- Delete a Brand
- Authorized users only
Color
Public Operations
- Get All Colors
- Get Single Color
Private Operations
- Add a Color
- Authorized users only
- Edit a Color
- Authorized users only
- Delete a Color
- Authorized users only
Customer
Public Operations
- Add a Customer
Private Operations
- Get All Customers
- Authorized users only
- Get Single Customer
- Authorized users only
- Edit a Customer
- Authorized users only
- Delete a Customer
- Authorized users only
Rental
Public Operations
- Get All Rentals
- Searching Rental By Car
- Logged users only
- Get Single Rental
- Logged users only
- Add a Rental
- Logged users only
- Check Car is Rentable
- Check Findeks Score Sufficiency
Private Operations
- Edit a Rental
- Authorized users only
- Delete a Rental
- Authorized users only
Users
Public Operations
- Get User Detail By Mail
- Add a User
- Update User Details
- Logged users only
Private Operations
- Get a User
- Searching user by mail
- Authorized users only
- Get all Users
- Authorized users only
- Edit a User
- Authorized users only
- Delete a User
- Authorized users only
Authentication
Requests are authenticated using the Authorization header and value Bearer {{token}}. with a valid JWT.
- Authentication Strategy : JWT
- JWT Expiration : 10 Minutes For Testing Api
- Registration
- User can register as a "Admin" or simply "User"
- Password Salt
- Password Hash
- Token includes : "id", "email", "name" and "roles"
- Login
- User can login with "email" and "password"
- Everytime a user login, new Token are sent to to client
Public Operations
- Login
- Logged users only
- Create Access Token
- Register new user
- Create Access Token
- Check User Exists
- Check user is authenticated
- Logged users only
Private Operations
- Encryption
- Hashing
- JWT
Operation Claim
Public Operations
- Get a Operation Claim
- Searching Operation Claim by name
- Get all Operation Claim
Private Operations
- Add a Operation Claim
- Authorized users only
- Edit a Operation Claim
- Authorized users only
- Delete a Operation Claim
- Authorized users only
User Operation Claim
Public Operations
- Add 'User' Claim
Private Operations
- Get a User Operation Claim
- Authorized users only
- Get all User Operation Claim
- Authorized users only
- Add a User Operation Claim
- Authorized users only
- Edit a User Operation Claim
- Authorized users only
- Delete a User Operation Claim
- Authorized users only
Credit Card (Test)
Public Operations
- Get a Credit Card
- Logged users only
- Get all Users
- Logged users only
- Searching Credit Card by Customer
- Add a Credit Card
- Logged users only
- Delete User Details
- Logged users only
Payment (Test)
Public Operations
- Payment (Fake)
Findeks (Test)
Public Operations
- Searching Findeks by Customer
- Logged users only
- Add a Findeks
- Logged users only
- Update a Findeks
- Logged users only
- Calculate Findeks Score (Fake)
Private Operations
- Get a Findeks
- Authorized users only
- Get all
- Authorized users only
- Update findeks
- Authorized users only
- Delete findeks
- Authorized users only
Layers
<details> <summary>Toggle Content</summary>Business
Business Layer created to process or control the incoming information according to the required conditions.
Core
Core layer containing various particles independent of the project.
DataAccess
Data Access Layer created to perform database CRUD operations.
Entities
Entities Layer created for database tables.
WebAPI
Web API Layer that opens the business layer to the internet.
</details><p></p>Models
<details> <summary>Toggle Content</summary>Brands
| Name | Data Type | Allow Nulls | Default | | :--- | :----------- | :---------- | :------ | | Id | int | False | | | Name | nvarchar(25) | False | |
Car Images
| Name | Data Type | Allow Nulls | Default | | :-------- | :------------ | :---------- | :------ | | Id | int | False | | | CarId | int | False | | | ImagePath | nvarchar(MAX) | False | | | Date | datetime | False | |
Car
| Name | Data Type | Allow Nulls | Default | | :-------------- | :------------ | :---------- | :------ | | Id | int | False | | | Name | nvarchar(50) | False | | | BrandId | int | False | | | ColorId | int | False | | | DailyPrice | decimal(18,0) | False | | | ModelYear | smallint | False | | | Description | nvarchar(50) | True | | | MinFindeksScore | smallint | False | ((0)) |
Color
| Name | Data Type | Allow Nulls | Default | | :--- | :----------- | :---------- | :------ | | Id | int | False | | | Name | nvarchar(25) | False | |
Credit Card (Test)
| Name | Data Type | Allow Nulls | Default | | :---------- | :------------ | :---------- | :------ | | Id | int | False | | | CustomerId | int | False | | | NameSurname | nvarchar(100) | False | | | CardNumber | nvarchar(25) | False | | | ExpMonth | tinyint | False | | | ExpYear | tinyint | False | | | Cvc | nvarchar(3) | False | | | CardType | nvarchar(20) | False | |
Customer
| Name | Data Type | Allow Nulls | Default | | :---------- | :----------- | :---------- | :------ | | Id | int | False | | | UserId | int | False | | | CompanyName | nvarchar(50) | True | |
Findeks (Test)
| Name | Data Type | Allow Nulls | Default | | :--------------- | :----------- | :---------- | :------ | | Id | int | False | | | CustomerId | int | False | | | NationalIdentity | nvarchar(50) | False | | | Score | smallint | False | ((0)) |
OperationClaims
| Name | Data Type | Allow Nulls | Default | | :--- | :----------- | :---------- | :------ | | Id | int | False | | | Name | varchar(250) | False | |
Rental
| Name | Data Type | Allow Nulls | Default | | :------------ | :-------- | :---------- | :------ | | Id | int | False | | | CarId | int | False | | | CustomerId | int | False | | | RentStartDate | datetime | False | | | RentEndDate | datetime | False | | | ReturnDate | datetime | True | |
UserOperationClaims
| Name | Data Type |
Related Skills
node-connect
350.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
