Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tasbeehismail/car-rental-system
This system provides functionalities for managing cars, customers, and rentals, ensuring operations for renting cars and tracking their availability
https://github.com/tasbeehismail/car-rental-system
apis backend crud express mongodb mongoose nodejs nosql odm
Last synced: about 1 month ago
JSON representation
This system provides functionalities for managing cars, customers, and rentals, ensuring operations for renting cars and tracking their availability
- Host: GitHub
- URL: https://github.com/tasbeehismail/car-rental-system
- Owner: tasbeehismail
- Created: 2024-06-12T15:31:49.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-06-18T13:36:25.000Z (8 months ago)
- Last Synced: 2024-06-18T18:05:01.922Z (8 months ago)
- Topics: apis, backend, crud, express, mongodb, mongoose, nodejs, nosql, odm
- Language: JavaScript
- Homepage:
- Size: 50.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Car Rental System
The Car Rental System is a web application built with Node.js and MongoDB, designed to facilitate the rental of cars by customers.
## Features
- **Car Management**: Perform CRUD operations for cars, including adding, updating, and deleting car information. Cars are marked as rented when rented out.
- **Customer Management**: Manage customers through CRUD operations, including signing up, signing in, updating, and deleting customer profiles.
- **Rental Management**: Handle the rentals, including creating new rentals, updating rental information, and deleting rentals once returned.
- **Special Queries**: Includes specialized API endpoints to retrieve specific information about cars based on their model and rental status.## MongoDB Models
### Car
- `name`: String
- `model`: String
- `rental_status`: String (Status of the car, either 'available' or 'rented')### User
- `name`: String
- `password`: String
- `email`: String
- `phone`: String
- `role`: String ('customer' or 'admin')
### Rental
- `car`: ObjectId (Reference to Car model)
- `customer`: ObjectId (Reference to Customer model)
- `rental_date`: Date
- `return_date`: Date## API Endpoints
### User APIs
1. **Signup**
- `POST /users/signup`
- Request Body: `{ name, password, email, phone }`
- Creates a new customer account in the system.2. **Login**
- `POST /users/login`
- Request Body: `{ email, password }`
3. **Get a specific user**
- `GET /users/:user_id`
- Retrieves details of a specific user by user ID.4. **Get all users**
- `GET /users/`
- Retrieves a list of all registered users.5. **Update user (owner only)**
- `PUT /users/:user_id`
- Request Body: `{ customer_id, name, email, phone }`
- Updates details of a specific user. Access restricted to owner/administrator.6. **Delete user (owner only)**
- `DELETE /users/:user_id`
- Deletes a specific user from the system. Access restricted to owner/administrator.### Car APIs
1. **Add car**
- `POST /cars/`
- Request Body: `{ name, model, rental_status }`
- Adds a new car to the system.2. **Get a specific car**
- `GET /cars/:car_id`
- Retrieves details of a specific car by car ID.3. **Get all cars**
- `GET /cars/`
- Retrieves a list of all cars available in the system.4. **Update a car**
- `PUT /cars/:car_id`
- Request Body: `{ name, model, rental_status }`
- Updates details of a specific car in the system.5. **Delete a car**
- `DELETE /cars/:car_id`
- Deletes a specific car from the system.### Rental APIs
1. **Create Rental**
- `POST /rentals/`
- Request Body: `{ customer, rental_date, return_date, car }`
- Creates a new rental transaction for a customer to rent a car.2. **Update Rental**
- `PUT /rentals/:rental_id`
- Request Body: `{ customer, rental_date, return_date, car }`
- Updates details of a specific rental transaction.3. **Delete Rental**
- `DELETE /rentals/:rental_id`
- Deletes a specific rental transaction from the system.4. **Get all Rentals**
- `GET /rentals`
- Retrieves a list of all rental transactions in the system.5. **Get a specific Rental**
- `GET /rentals/:rental_id`
- Retrieves details of a specific rental transaction by rental ID.### Special APIs
1. **Get all cars whose model is ‘Honda’ and ‘Toyota’**
- `GET /cars/special?models=Honda,Toyota`
- Retrieves a list of all cars with models 'Honda' or 'Toyota'.2. **Get Available Cars of a Specific Model**
- `GET /cars/available?model=Honda`
- Retrieves a list of available cars of a specific model.3. **Get Cars that are Either rented or of a Specific Model**
- `GET /cars/rentedOrSpecific?model=Honda`
- Retrieves a list of cars that are either rented or of a specific model.4. **Get Available Cars of Specific Models or Rented Cars of a Specific Models**
- `GET /cars/available-or-rented?availableModel=Toyota&rentedModel=Honda`
- Retrieves a list of available cars of specific models or rented cars of a specific models.