RentItOut is a peer-to-peer rental platform that allows users to list and rent everyday items like tools, sports equipment, and electronics. This project focuses on building the backend API for the platform.
- Item listings for rent
- Rental management and pricing
- User authentication and role-based access
- Trust, safety, and verification for users
- Delivery and pickup logistics for rented items
- Automatic API documentation using Swagger
- Clone the repository:
git clone https://github.com/Abbas-Nedal/RentItOut.git
- Install dependencies:
npm install
- Run the application:
npm start
- Access API Documentation:
See documentation: http://localhost:3000/api-docs
- Node.js: The runtime environment for executing JavaScript code on the server.
- Express.js: A web application framework for building APIs and handling HTTP requests.
- MySQL: The relational database used to store user, item, and rental data (hosted on AWS RDS).
- AWS: Amazon Web Services, used for hosting the MySQL database on Amazon RDS for reliable and scalable cloud database management.
- Docker: A containerization tool that simplifies the deployment process by packaging the application and its dependencies into a container.
- Winston: A logging library used to log requests and other system events.
- body-parser: Middleware for parsing incoming request bodies in JSON format.
- Swagger: A tool for auto-generating API documentation and testing endpoints.
- RESTful API: The architectural style used for designing the API endpoints.
- Express-validator: Middleware for validating request bodies.
- Nodemailer: A module for sending emails from Node.js applications.
- dotenv: Module for loading environment variables from a
.env
file. - jsonwebtoken: Library to create and verify JSON Web Tokens (JWT) for authentication.
📦 RentItOut
┣ 📂 config # Configuration settings and database connection file
┣ 📂 controllers # Contains request-handling logic
┣ 📂 docs # Contains Swagger configuration and documnetaion file
┣ 📂 logs-output # Stores logs output
┣ 📂 middlewares # Middleware functions for processing requests
┣ 📂 models # Database models, SQL query logic
┣ 📂 routes # API route definitions
┣ 📂 services # Business logic, external API handling, mail service
┣ 📂 validations # Request validation logic
┣ 📜 .dockerignore
┣ 📜 .env
┣ 📜 .gitignore
┣ 📜 docker-compose.yml
┣ 📜 Dockerfile
┣ 📜 package-lock.json
┣ 📜 package.json
┣ 📜 README.md
┗ 📜 server.js # Entry point for the server