FAQ - aelassas/bookcars GitHub Wiki

Here you can find a list of questions and answers relating to BookCars.

Is BookCars free to use, or are certain features restricted?

BookCars is free and open source. BookCars is licensed under the MIT License. The license is permissive. This means that you have lots of permission and few restrictions. You have permission to use the code, to modify it, to publish it, make something with it and sell it, etc.

There are no locked or restricted features. If you deploy BookCars on your server, you can access all features available.

On demo links provided on GitHub, some features are locked. If you want to unlock these features, contact the project owner by email (requires login).

Can people use BookCars for commercial needs? Any licensing caveats?

BookCars is licensed under the MIT License, which means you can absolutely use it for commercial purposes.

You can:

  • Use it in commercial and proprietary products
  • Modify and adapt the code as you need
  • Distribute your modified or original version
  • Use it privately or publicly

Caveats:

  • You must include the original license and copyright notice in your distribution
  • There is no warranty—you use it at your own risk (this clause protects open-source maintainers from liability while allowing users full freedom to use the software)

There are no other restrictions. It's a very permissive and business-friendly license.

How to automatically prevent a car from being booked multiple times when it's already booked?

To prevent a car from being booked multiple times when it's already booked, you need to toggle Block Car On Successful Payment option on the car. When enabled (default), the car will not appear in search results if the requested pickup and drop-off times overlap with an existing booking. When disabled, the car can still appear in search results even if it's already booked during that time. In this case, you can manually hide the car by setting it as unavailable or fully booked from the admin panel.

This option helps manage car availability more easily based on rental policy.

How do I prevent users from booking too close to the pickup time or outside business hours?

BookCars allows admins to configure rules that control how rental date and time selections behave across the platform. These settings help ensure cars are not booked with unrealistic timeframes or outside of operating hours.

Location

Admin Panel → Settings → Rental Settings

Example Use Case

If the business operates between 09:00 and 19:00, and needs to be at least 2 hours in future for pick up, and a minimum rental duration of 24 hours, the settings would look like:

Setting Value
Minimum required time in hours before pick-up 2
Minimum rental duration in hours between pick up and drop off 24
Minimum allowed hour for pickup and drop-off 9
Maximum allowed hour for pickup and drop-off 19

You can find more information about these settings here.

Is there a link to make donations?

Yes, of course. You can donate through GitHub Sponsorship (one-time or monthly), PayPal, or Buy Me a Coffee. Even a simple star on the GitHub repository helps spread the word and is greatly appreciated.

How can I hide suppliers from the frontend?

VITE_BC_HIDE_SUPPLIERS setting allows to toggle supplier visibility in the frontend.

To hide suppliers from the frontend, simply set it to true in frontend/.env:

VITE_BC_HIDE_SUPPLIERS=true

Then re-run the frontend if you are in a development environment or redeploy the frontend if you are in a production environment.

How Do I Set Minimum Rental Days for a Supplier?

You can set the minimum rental days for a supplier from the Supplier page in the admin dashboard. This setting ensures that customers can only book rentals that meet or exceed the specified minimum rental period.

If the minimum rental days for a supplier is set to 3, only rental periods of 3 days or more will be allowed. Rental searches with a duration less than 3 days will not display available vehicles from that supplier.

Example:

  • Minimum Rental Days: 3
  • Customer searches for a 2-day rental: No results will be shown.
  • Customer searches for a 3-day or longer rental: Available vehicles will be displayed.

How Can I Enable Pay at Counter and Pay Deposit Checkout Options?

To enable the Pay at Counter and Pay Deposit checkout options, follow these steps:

  1. Go to the Supplier page in the Admin Dashboard.
  2. Locate the option "Authorize Payment Later".
  3. Toggle this option ON to allow customers to:
    • Pay at Counter (pay the full amount in person).
    • Pay Deposit (pay a partial amount upfront and the rest later).

Important Note:

  • If "Authorize Payment Later" is disabled, only the Pay in Full Online option will be available at checkout.

This feature gives suppliers flexibility in how they handle payments, allowing customers to choose their preferred payment method.

How do I limit the number of cars for a supplier in search results?

You can limit the number of cars for a supplier in search results by setting the maximum number of cars allowed for a supplier from the Create/Update Supplier pages in the admin dashboard. Use the field "Max Allowed Cars in Search" to configure this. Only admins can edit this field.

  • To allow unlimited cars, leave the "Max Allowed Cars in Search" field empty.
  • To hide all cars for a supplier, set "Max Allowed Cars in Search" to 0.
  • To allow for example 5 cars, set "Max Allowed Cars in Search" to 5.

How to notify the admin when a supplier creates a new car?

To notify the admin when a supplier creates a new car, enable the "Notify Admin on New Car" option from the Create/Update Supplier page in the admin dashboard. When this option is enabled, the admin will be automatically notified whenever a supplier adds a new car. Only admins can edit this field.

To receive email notifications, ensure that the "Enable Email Notifications" option is enabled for the admin user in the Settings page of the admin dashboard.

How can I show bank details to suppliers?

To show bank details to suppliers, follow these steps:

  1. Login as admin to the admin dashboard.
  2. Click on your avatar in the top right corner, then select Settings.
  3. Navigate to the Bank Details section.
  4. Add your bank details and enable the Show Bank Details Page option.

Once enabled, a new menu item called Bank Details will appear in the navbar, allowing suppliers to view the bank details.

Only admins can edit bank details.

How do I set a price change rate for a supplier?

Check out this doc to set a price change rate for a supplier.

How do I set up brevo as email provider?

First sign up on brevo: https://www.brevo.com/products/transactional-email/

Second, enter your information, check "I don't have a website" if you don't have one.

Third, enter your address.

Fourth, enter info about your organization and check "I don’t want to receive product updates, marketing tips, or promotional content from Brevo. "

Fifth, enter and validate your phone number.

Finally, you will enter the brevo dashboard.

Click on your organization name on the top right corner, then SMTP & API.

Copy your STMP login email (ex: [email protected]), and your master password.

Paste your smtp login and master password in api/.env:

BC_SMTP_HOST=smtp-relay.brevo.com
BC_SMTP_PORT=587
[email protected]
BC_SMTP_PASS=YOUR_MASTER_PASSWORD
[email protected]

Once you finished with .env, restart bookcars.service:

sudo systemctl restart bookcars.service

How to create admin account?

If you don't want to use the demo database, create an admin user by running the following command from backend to create admin user:

npm run setup

It will create an admin user with the email provided in BC_ADMIN_EMAIL in backend/.env and B00kC4r5 as password. Change the password once you log in to admin panel.

To delete the admin user with the email provided in BC_ADMIN_EMAIL, run the following command from backend:

npm run reset

I want to make changes to BookCars but still get updates from the main repository. How can I do that?

You can fork the repository, make your changes, and keep your version in sync with the main repository by following the Fork, Customize, and Sync guide.