{"id":22861563,"url":"https://github.com/mustafa-hamzawy/rentify","last_synced_at":"2026-04-10T07:19:18.731Z","repository":{"id":267307868,"uuid":"881470069","full_name":"MUSTAFA-Hamzawy/Rentify","owner":"MUSTAFA-Hamzawy","description":"Practicing NestJS.","archived":false,"fork":false,"pushed_at":"2024-12-11T16:42:45.000Z","size":401,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T13:17:50.774Z","etag":null,"topics":["authentication","authorization","crud","docker","docker-compose","jest","nestjs","nodejs","postgres","postgresql","rbac-roles","redis","redis-cache","resful-api","rest-api","supertest","typeorm","typescript","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MUSTAFA-Hamzawy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-31T16:27:24.000Z","updated_at":"2024-12-11T16:42:49.000Z","dependencies_parsed_at":"2024-12-09T16:36:49.505Z","dependency_job_id":"1e258b2e-2306-4fa3-a309-0406e24bba73","html_url":"https://github.com/MUSTAFA-Hamzawy/Rentify","commit_stats":null,"previous_names":["mustafa-hamzawy/rentify"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MUSTAFA-Hamzawy%2FRentify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MUSTAFA-Hamzawy%2FRentify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MUSTAFA-Hamzawy%2FRentify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MUSTAFA-Hamzawy%2FRentify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MUSTAFA-Hamzawy","download_url":"https://codeload.github.com/MUSTAFA-Hamzawy/Rentify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246443492,"owners_count":20778247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","authorization","crud","docker","docker-compose","jest","nestjs","nodejs","postgres","postgresql","rbac-roles","redis","redis-cache","resful-api","rest-api","supertest","typeorm","typescript","unit-testing"],"created_at":"2024-12-13T10:09:34.388Z","updated_at":"2026-04-10T07:19:18.676Z","avatar_url":"https://github.com/MUSTAFA-Hamzawy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr/\u003e\n\u003ch1 align=\"center\"\u003eRentify\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\nRentify is a backend API for a car rental system, built using NestJS and PostgreSQL.\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://app.swaggerhub.com/apis-docs/MustafaHamzawy/Rentify/1.0.0\" target=\"_blank\"\u003eAPI Docs .\u003c/a\u003e  \n\u003ca href=\"https://github.com/MUSTAFA-Hamzawy/Rentify/issues/new?labels=bug\u0026amp;template=bug_report.md\" target=\"_blank\"\u003eReport Bug .\u003c/a\u003e\n\u003ca href=\"https://github.com/MUSTAFA-Hamzawy/Rentify/issues/new?labels=enhancement\u0026amp;\u0026template=feature_request.md\" target=\"_blank\"\u003eRequest Feature\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## Table Of Contents\n\n- [About The Project](#about-the-project)\n- [Features](#features)\n- [API Documentation](#api-documentation)\n- [Built With](#built-with)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n    - [Using Docker](#using-docker)\n    - [Manual Setup](#manual-setup)\n- [Contributing](#contributing)\n  - [Creating A Pull Request](#creating-a-pull-request)\n- [License](#license)\n\n## About The Project\n\nRentify is a backend API for a car rental system built with NestJS and PostgreSQL, inspired by the RentX app. It provides essential endpoints for managing car rentals, focusing on robust features like user management, authentication, and rental operations. Rentify is designed to streamline the backend processes required for a modern car rental service.\n\n## Features\n- \u003cstrong\u003eUser Management:\u003c/strong\u003e Handles user and admin accounts, supporting creation, updates, and role-based access.\n- \u003cstrong\u003eAuthentication:\u003c/strong\u003e Secures the API with JWT-based access and refresh token mechanisms.\n- \u003cstrong\u003eBrands:\u003c/strong\u003e Provides endpoints to manage and retrieve car brands for easy categorization and filtering.\n- \u003cstrong\u003eCar Management:\u003c/strong\u003e Includes CRUD operations for cars, managing details like availability, pricing, and specifications.\n- \u003cstrong\u003eLocations:\u003c/strong\u003e Manages pickup and dropoff points for rented cars, offering flexibility for users.\n- \u003cstrong\u003eDiscounts:\u003c/strong\u003e Enables management of promotional discounts to enhance customer engagement.\n- \u003cstrong\u003eOrders:\u003c/strong\u003e Handles rental bookings, including order creation, status tracking, and related operations.\n\n\n## API Documentation\n\n\u003ca href=\"https://documenter.getpostman.com/view/17672386/2sAYBPkENB\" target=\"_blank\"\u003e API Docs [Postman] \u003c/a\u003e\n\n\u003ca href=\"https://app.swaggerhub.com/apis-docs/MustafaHamzawy/Rentify/1.0.0\" target=\"_blank\"\u003e API Docs [Swagger] \u003c/a\u003e\n\n\n## Built With\n\n* NodeJS\n* NestJS\n* TypeScript\n* PostgreSQL\n* Redis\n* TypeORM\n* JWT (JSON Web Tokens)\n* bcryptjs\n* multer\n* Jest\n* npm\n* Postman\n* Swagger\n* Docker\n\n## Getting Started\n\nTo get a local copy up and running follow these simple steps.\n\n### Prerequisites\n\n* NodeJS\n* npm\n* PostgreSQL\n* Redis\n* Docker (optional)\n\n### Installation\n\n### First : Clone the repo\n  \n  ```sh\n      git clone https://github.com/MUSTAFA-Hamzawy/Rentify.git\n  ```\n\nthen, Move to the project directory\n\n#### Second : Make your own copy of the .env file\n\n1. Create a copy of the `.env.example` file and name it `.env`:\n   \n   ```sh\n       cp .env.example .env\n    ```\n   \n2. Update the .env file with the following configurations:\n   - JWT_ACCESS_TOKEN_KEY: Generate a secure hexadecimal key using this command ( or use any way you prefer )\n     \n   ```sh\n       openssl rand -hex 32\n    ```\n   \n   - JWT_REFRESH_TOKEN_KEY: Generate another secure hexadecimal key using the same command.\n    \n   - OTP_SECRET_KEY: Generate yet another secure hexadecimal key using the same command.\n   - SMTP_MAIL : write your smtp email that will be used to send emails for users\n   - APP_PASSWORD : you can generate app passwrod for gmail account from here : https://knowledge.workspace.google.com/kb/how-to-create-app-passwords-000009237\n\n#### Second : You can proceed using docker or the manual setup\n#### Using Docker\n\nSet up and run the application using Docker containers\n  ```sh\n      docker-compose -f docker-compose.yml -f docker-compose-prod.yml up -d\n  ```\nNOTE: the container will run on port 4000, you can adjust it from the file docker-compose.yml\n#### Manual Setup\n  \n  1. Create a new database\n  2. setup \"src/database/db.config.json\" file based on your db configurations \n  3. Install dependecies \u0026 seeding database\n  \n  ```sh\n      npm install -g @nestjs/cli\n      npm install\n      npm run migration:run\n      npm run seed\n  ```\n  \n  4. Start Running\n  ```sh\n      npm start\n  ```\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n- If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/MUSTAFA-Hamzawy/Rentify/issues/new) to discuss it, or\n-  Directly create a pull request after you edit the files with necessary changes.\n\n### Creating A Pull Request\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\nSee [LICENSE](https://github.com/MUSTAFA-Hamzawy/Rentify/blob/main/LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafa-hamzawy%2Frentify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmustafa-hamzawy%2Frentify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafa-hamzawy%2Frentify/lists"}