Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.0%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Bookcars

Basic Info
  • Host: GitHub
  • Owner: josemotorche
  • License: mit
  • Language: TypeScript
  • Default Branch: main
  • Size: 37.8 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 9 months ago · Last pushed 9 months ago
Metadata Files
Readme Funding License Citation

README.md

build test coveralls loc docs live demo

BookCars

BookCars is a highly customizable, scalable, and cost-efficient solution for car rental businesses. Its robust feature set and open-source nature make it a sustainable choice for long-term growth in the rental industry.

BookCars integrates Stripe and PayPal payment gateways. You can choose either to use Stripe or PayPal for payments. If Stripe isn't available in your country, simply check if PayPal is supported and use it as an alternative for smooth and secure payments.

With BookCars, you can deploy your own customizable car rental marketplace at minimal cost using the Docker-based setup. The platform integrates Stripe and PayPal for secure payments and can be efficiently hosted on a 1GB RAM droplet, making it an ideal choice for single or multi-supplier operations looking for a scalable and cost-effective solution. You can deploy it for under $5/month using cloud providers like Hetzner or DigitalOcean. <!-- BookCars is free and open source. You can customize it as you want and deploy it yourself by following the documentation. If you want me to customize it and deploy it for you, contact me by email. You can find my email in my GitHub profile page. You need to be logged in to GitHub to view my email. I can deploy the platform to the cloud for you, configure your DNS, emailing, webmail and all related tasks. --> BookCars is designed to work with multiple suppliers. Suppliers can manage their car fleets and bookings from the admin dashboard. BookCars can also work with a single supplier and can be used as a car rental aggregator.

From the admin dashboard, admins can create and manage suppliers, cars, countries, locations, parking spots, customers, bookings and payments.

When new suppliers are created, they receive an email prompting them to create an account in order to access the admin dashboard and manage their car fleets and bookings.

Customers can sign up from the frontend or the mobile app, search for available cars based on pickup and drop-off points and time, choose a car and complete the checkout process.

Features

  • Supplier management
  • Supplier contracts
  • Ready for one or multiple suppliers
  • Car fleet management
  • Dynamic price calculation
  • Date Based Price Rates
  • Price Change Rate
  • Location, country, parking spots and map features
  • Booking management
  • Vehicle scheduler
  • Payment management
  • Customer management
  • Multiple login options (Google, Facebook, Apple, Email)
  • Multiple payment methods (Credit Card, PayPal, Google Pay, Apple Pay, Link, Pay at the counter, Pay in full, Pay deposit)
  • Multiple language support (English, French, Spanish)
  • Multiple currencies support
  • Multiple pagination options (Classic pagination with next and previous buttons, infinite scroll)
  • Multiple Payment Gateways supported (Stripe, PayPal)
  • Responsive admin dashboard and frontend
  • Native Mobile app for Android and iOS with single codebase
  • Push notifications
  • Secure against XSS, XST, CSR, MITM and DDoS
  • Supported Platforms: iOS, Android, Web, Docker

Live Demo

Frontend

  • URL: https://bookcars.dynv6.net:3002/
  • Login: jdoe@bookcars.ma
  • Password: B00kC4r5

Admin Dashboard

  • URL: https://bookcars.dynv6.net:3001/
  • Login: admin@bookcars.ma
  • Password: B00kC4r5

Mobile App

You can install the Android app on any Android device.

Scan this code with a device

Open the Camera app and point it at this code. Then tap the notification that appears.

How to install the Mobile App on Android

  • On devices running Android 8.0 (API level 26) and higher, you must navigate to the Install unknown apps system settings screen to enable app installations from a particular location (i.e. the web browser you are downloading the app from).

  • On devices running Android 7.1.1 (API level 25) and lower, you should enable the Unknown sources system setting, found in Settings > Security on your device.

Alternative Way

You can install the Android App by downloading the APK and installing it on any Android device.

Documentation

  1. Overview
  2. Why Use BookCars
  3. Architecture
  4. Installing (Self-hosted)
  5. Installing (Docker)
    1. Docker Image
    2. SSL
  6. Payment Gateways
  7. Setup Stripe
  8. Build Mobile App
  9. Demo Database
    1. Windows, Linux and macOS
    2. Docker
  10. Run from Source
  11. Run from Source (Docker)
  12. Run Mobile App
    1. Prerequisites
    2. Instructions
    3. Push Notifications
    4. Run iOS App
  13. Add New Language
  14. Add New Currency
  15. Unit Tests and Coverage
  16. Manual Tests
  17. Price Calculation
    1. Pricing Fields
    2. Discounted Prices
    3. Date Based Price Rates
    4. Price Change Rate
    5. Calculation Algorithm
  18. Supplier Contracts
  19. Logs
  20. FAQ
  21. Release Notes

Support

If you find this project helpful, consider buying me a coffee.

Buy Me A Coffee

License

BookCars is MIT licensed.

Owner

  • Login: josemotorche
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use BookCars in your research or projects, please cite it using the following metadata."
title: "BookCars: A Car Rental Booking System"
authors:
  - name: "Akram El Assas"
year: 2025
repository-code: "https://github.com/aelassas/bookcars"
license: "MIT"
keywords:
  - car rental
  - booking system
  - aggregator
  - react
  - react native
  - mongodb
  - stripe
  - paypal
  - bookcars
url: "https://github.com/aelassas/bookcars"
type: software

GitHub Events

Total
  • Create event: 2
Last Year
  • Create event: 2

Dependencies

.github/workflows/api.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/backend.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/build.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/frontend.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/loc.yml actions
  • actions/checkout v4 composite
  • peaceiris/actions-gh-pages v3 composite
  • shadowmoose/GHA-LoC-Badge 1.0.0 composite
.github/workflows/mobile.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/test.yml actions
  • actions/checkout v4 composite
  • actions/github-script v7 composite
  • actions/setup-node v4 composite
  • codecov/codecov-action v5 composite
  • coverallsapp/github-action v2 composite
api/Dockerfile docker
  • node lts-alpine build
backend/Dockerfile docker
  • nginx stable-alpine build
  • node lts-alpine build
docker-compose.dev.yml docker
  • mongo latest
  • mongo-express latest
docker-compose.yml docker
  • mongo latest
  • mongo-express latest
frontend/Dockerfile docker
  • nginx stable-alpine build
  • node lts-alpine build
api/package-lock.json npm
  • 817 dependencies
api/package.json npm
  • @babel/cli ^7.27.2 development
  • @babel/core ^7.27.1 development
  • @babel/plugin-transform-modules-commonjs ^7.27.1 development
  • @babel/preset-env ^7.27.2 development
  • @babel/preset-typescript ^7.27.1 development
  • @types/bcrypt ^5.0.2 development
  • @types/compression ^1.7.5 development
  • @types/cookie-parser ^1.4.8 development
  • @types/cors ^2.8.18 development
  • @types/express ^5.0.1 development
  • @types/jest ^29.5.14 development
  • @types/multer ^1.4.12 development
  • @types/node ^22.15.18 development
  • @types/nodemailer ^6.4.17 development
  • @types/supertest ^6.0.3 development
  • @types/validator ^13.15.0 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • babel-jest ^29.7.0 development
  • babel-plugin-add-import-extension ^1.6.0 development
  • babel-plugin-module-resolver ^5.0.2 development
  • cross-env ^7.0.3 development
  • eslint ^9.26.0 development
  • eslint-plugin-import ^2.31.0 development
  • eslint-plugin-jest ^28.11.0 development
  • globals ^16.1.0 development
  • jest ^29.7.0 development
  • nodemon ^3.1.10 development
  • npm-check-updates ^18.0.1 development
  • rimraf ^6.0.1 development
  • supertest ^7.1.1 development
  • tsx ^4.19.4 development
  • typescript ^5.8.3 development
  • axios ^1.9.0
  • bcrypt ^6.0.0
  • compression ^1.8.0
  • cookie-parser ^1.4.7
  • cors ^2.8.5
  • dotenv ^16.5.0
  • escape-string-regexp ^5.0.0
  • expo-server-sdk ^3.15.0
  • express ^5.1.0
  • helmet ^8.1.0
  • i18n-js ^4.5.1
  • jose ^6.0.11
  • mongoose ^8.14.3
  • multer ^1.4.5-lts.2
  • nanoid ^5.1.5
  • nocache ^4.0.0
  • nodemailer ^7.0.3
  • stripe ^18.1.0
  • validator ^13.15.0
  • winston ^3.17.0
backend/package-lock.json npm
  • 603 dependencies
backend/package.json npm
  • @babel/plugin-transform-runtime ^7.27.1 development
  • @types/nprogress ^0.2.3 development
  • @types/react ^19.1.4 development
  • @types/react-dom ^19.1.5 development
  • @types/validator ^13.15.0 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • @vitejs/plugin-react ^4.4.1 development
  • babel-plugin-react-compiler ^19.1.0-rc.1 development
  • cross-env ^7.0.3 development
  • eslint ^9.26.0 development
  • eslint-plugin-react ^7.37.5 development
  • eslint-plugin-react-compiler ^19.1.0-rc.1 development
  • eslint-plugin-react-hooks ^5.2.0 development
  • eslint-plugin-react-refresh ^0.4.20 development
  • globals ^16.1.0 development
  • npm-check-updates ^18.0.1 development
  • stylelint ^16.19.1 development
  • stylelint-config-standard ^38.0.0 development
  • terser ^5.39.1 development
  • typescript ^5.8.3 development
  • vite ^6.3.5 development
  • vite-plugin-html ^3.2.2 development
  • @emotion/react ^11.14.0
  • @emotion/styled ^11.14.0
  • @hookform/resolvers ^5.0.1
  • @mui/icons-material ^7.1.0
  • @mui/material ^7.1.0
  • @mui/x-data-grid ^8.3.0
  • @mui/x-date-pickers ^8.3.0
  • axios ^1.9.0
  • date-fns ^4.1.0
  • history ^5.3.0
  • localized-strings ^2.0.3
  • nprogress ^0.2.0
  • react ^19.1.0
  • react-dom ^19.1.0
  • react-hook-form ^7.56.3
  • react-router-dom ^7.6.0
  • react-toastify ^11.0.5
  • rrule ^2.8.1
  • validator ^13.15.0
  • zod ^3.24.4
frontend/package-lock.json npm
  • 628 dependencies
frontend/package.json npm
  • @babel/plugin-transform-runtime ^7.27.1 development
  • @types/leaflet ^1.9.17 development
  • @types/leaflet-boundary-canvas ^1.0.3 development
  • @types/nprogress ^0.2.3 development
  • @types/react ^19.1.4 development
  • @types/react-dom ^19.1.5 development
  • @types/react-recaptcha-v3 ^1.1.5 development
  • @types/react-slick ^0.23.13 development
  • @types/validator ^13.15.0 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • @vitejs/plugin-react ^4.4.1 development
  • babel-plugin-react-compiler ^19.1.0-rc.1 development
  • cross-env ^7.0.3 development
  • eslint ^9.26.0 development
  • eslint-plugin-react ^7.37.5 development
  • eslint-plugin-react-compiler ^19.1.0-rc.1 development
  • eslint-plugin-react-hooks ^5.2.0 development
  • eslint-plugin-react-refresh ^0.4.20 development
  • globals ^16.1.0 development
  • npm-check-updates ^18.0.1 development
  • stylelint ^16.19.1 development
  • stylelint-config-standard ^38.0.0 development
  • terser ^5.39.1 development
  • typescript ^5.8.3 development
  • vite ^6.3.5 development
  • vite-plugin-html ^3.2.2 development
  • @emotion/react ^11.14.0
  • @emotion/styled ^11.14.0
  • @hookform/resolvers ^5.0.1
  • @mui/icons-material ^7.1.0
  • @mui/material ^7.1.0
  • @mui/x-data-grid ^8.3.0
  • @mui/x-date-pickers ^8.3.0
  • @paypal/react-paypal-js ^8.8.3
  • @stripe/react-stripe-js ^3.7.0
  • @stripe/stripe-js ^7.3.0
  • axios ^1.9.0
  • date-fns ^4.1.0
  • github-fork-ribbon-css ^0.2.3
  • history ^5.3.0
  • leaflet ^1.9.4
  • leaflet-boundary-canvas ^1.0.0
  • localized-strings ^2.0.3
  • nprogress ^0.2.0
  • react ^19.1.0
  • react-circle-flags ^0.0.23
  • react-dom ^19.1.0
  • react-ga4 ^2.1.0
  • react-hook-form ^7.56.3
  • react-leaflet ^5.0.0
  • react-router-dom ^7.6.0
  • react-slick ^0.30.3
  • react-toastify ^11.0.5
  • slick-carousel ^1.8.1
  • validator ^13.15.0
  • zod ^3.24.4
mobile/package-lock.json npm
  • 933 dependencies
mobile/package.json npm
  • @babel/core ^7.27.1 development
  • @types/lodash.debounce ^4.0.9 development
  • @types/mime ^3.0.4 development
  • @types/prop-types ^15.7.14 development
  • @types/react ~19.0.10 development
  • @types/react-native-dotenv ^0.2.2 development
  • @types/react-native-vector-icons ^6.4.18 development
  • @types/validator ^13.15.0 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • babel-plugin-module-resolver ^5.0.2 development
  • cross-env ^7.0.3 development
  • eslint ^9.26.0 development
  • eslint-plugin-react ^7.37.5 development
  • eslint-plugin-react-hooks ^5.2.0 development
  • typescript ~5.8.3 development
  • @babel/runtime ^7.27.1
  • @react-native-async-storage/async-storage 2.1.2
  • @react-native-community/datetimepicker 8.3.0
  • @react-navigation/drawer ^7.3.12
  • @react-navigation/native ^7.1.9
  • @react-navigation/native-stack ^7.3.13
  • @react-navigation/stack ^7.3.2
  • @stripe/stripe-react-native 0.45.0
  • axios ^1.9.0
  • axios-retry ^4.5.0
  • date-fns ^4.1.0
  • expo ^53.0.9
  • expo-asset ~11.1.5
  • expo-constants ~17.1.6
  • expo-device ~7.1.4
  • expo-document-picker ~13.1.5
  • expo-image-picker ~16.1.4
  • expo-linking ~7.1.5
  • expo-localization ~16.1.5
  • expo-location ~18.1.5
  • expo-notifications ~0.31.2
  • expo-splash-screen ~0.30.8
  • expo-status-bar ~2.2.3
  • expo-updates ~0.28.13
  • i18n-js ^4.5.1
  • lodash.debounce ^4.0.8
  • mime ^4.0.7
  • prop-types ^15.8.1
  • react 19.0.0
  • react-native 0.79.2
  • react-native-animatable ^1.4.0
  • react-native-dotenv ^3.4.11
  • react-native-feather ^1.1.2
  • react-native-gesture-handler ~2.24.0
  • react-native-keyboard-aware-scroll-view ^0.9.5
  • react-native-modal-datetime-picker ^18.0.0
  • react-native-paper ^5.14.3
  • react-native-reanimated ~3.17.5
  • react-native-safe-area-context ^5.4.0
  • react-native-screens ^4.10.0
  • react-native-size-matters ^0.4.2
  • react-native-toast-message ^2.3.0
  • react-native-vector-icons ^10.2.0
  • validator ^13.15.0
package-lock.json npm
  • chalk 5.4.1 development
  • husky 9.1.7 development
  • p-limit 6.2.0 development
  • yocto-queue 1.2.1 development
package.json npm
  • chalk ^5.4.1 development
  • husky ^9.1.7 development
  • p-limit ^6.2.0 development
packages/bookcars-helper/package-lock.json npm
  • 144 dependencies
packages/bookcars-helper/package.json npm
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • eslint ^9.27.0 development
  • rimraf ^5.0.5 development
  • typescript ^5.2.2 development
  • @babel/runtime ^7.26.0
packages/bookcars-types/package-lock.json npm
  • 144 dependencies
packages/bookcars-types/package.json npm
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • eslint ^9.27.0 development
  • rimraf ^5.0.1
  • typescript ^5.2.2
packages/currency-converter/package-lock.json npm
  • 170 dependencies
packages/currency-converter/package.json npm
  • @types/node ^22.15.3 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • eslint ^9.27.0 development
  • rimraf ^6.0.1 development
  • typescript ^5.8.3 development
  • @babel/runtime ^7.27.1
  • easy-currencies ^1.8.3
packages/disable-react-devtools/package-lock.json npm
  • 144 dependencies
packages/disable-react-devtools/package.json npm
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • eslint ^9.27.0 development
  • rimraf ^5.0.1
  • typescript ^5.2.2
packages/reactjs-social-login/package-lock.json npm
  • 659 dependencies
packages/reactjs-social-login/package.json npm
  • @types/node ^22.13.14 development
  • @types/react ^19.0.12 development
  • @typescript-eslint/eslint-plugin ^8.32.1 development
  • @typescript-eslint/parser ^8.32.1 development
  • eslint ^9.27.0 development
  • microbundle-crl ^0.13.11 development
  • react ^19.1.0 development
  • rimraf ^6.0.1 development
  • typescript ^5.8.2 development