About this software
About Car Rental Manager: Fleet, Bookings & Returns
A complete rental desk system built with Laravel 13 and Filament 5. Manages fleet availability with buffer hours between rentals, seasonal pricing with weekly and monthly tiers, extras, coupons and young-driver fees. Handles the full rental lifecycle from online booking requests through handover, extensions and returns with late fees, fuel charges and damage costs. Three roles (admin, manager, agent) control access to fleet management, pricing, refunds and reports. Public fleet search and booking pages create customers and hold requests; customers follow their booking through a signed link.
Why Car Rental Manager: Fleet, Bookings & Returns
What makes it better
than the alternatives
- 01
Real availability engine
Overlaps refused, buffer hours enforced, late returns keep the car blocked until it comes back
- 02
Append-only payment ledger
Deposits, payments, refunds and deposit applications are never edited, balances are derived
- 03
Seasonal pricing with tier logic
Weekly and monthly rates apply only when cheaper than the daily rate, highest season multiplier per date wins
- 04
Signed customer links
No login needed, booking and agreement URLs expire after the return date plus configurable days
- 05
Branch-aware operations
Pickup and return must fall inside opening hours, cars move between branches, handover checks the licence
Fleet
- Cars with plate
- make
- model
- year
- category
- branch
- transmission
- fuel
- seats
- bags and odometer. Categories carry day
- week and month rates
- deposit
- kilometre allowance and minimum driver age. Branches have opening hours. Maintenance logs
- workshop and cleaning blocks
- and an expiring insurance and registration widget.
Availability and pricing
- The car row is locked while a booking is created
- overlaps are refused
- buffer hours apply on both sides
- and a late rental keeps the car blocked until it is back. Seasons with a multiplier (highest per date wins)
- weekly and monthly tiers only when cheaper
- extras per day or per rental
- young-driver fee
- coupons and a flat tax.
Bookings and desk
- Desk bookings show only cars free at the pickup branch. Online requests are held for HOLD_HOURS and released if unpaid. Statuses: pending
- confirmed
- active
- returned
- completed
- cancelled
- no_show. Driver checks cover blocked customers
- minimum age
- licence valid through the return
- branch opening hours and maximum days. Cancellation is free inside the free window
- otherwise a percentage fee is taken from money received. No-show marking after no_show_hours.
Handover and returns
- Pickup records odometer and fuel from two hours before the pickup time. Return adds a late fee after the grace period (capped at one extra day per 24 hours)
- extra kilometres
- a fuel fee and damage. The deposit is applied to the charges and the rest is refunded in the same step. The car moves to the return branch. Extensions are checked against the next booking.
Payments
- An append-only ledger (payment
- deposit
- deposit_applied
- deposit_refund
- refund) by cash
- card or transfer. Balance due
- deposit held and amount paid towards charges are always worked out from the ledger. Refunds need the manager role. Bookings and payments are never edited or deleted.
Customers
- Contact details
- licence number and expiry
- a blocked flag and a full booking history. Customers are created by the public form or at the desk and existing customer details are not overwritten by a public request.
Public pages
- Fleet search with date
- branch and category filters showing only available cars. A booking form with a honeypot and rate limits. A signed
- expiring booking link shows status
- charges and payments and lets the customer cancel. A printable rental agreement. PUBLIC_BOOKING_ENABLED switches the public pages off.
Reports and calendar
- Fleet calendar timeline
- revenue by branch
- category and payment method
- utilisation per car
- today's pickups and returns
- bookings by status and month-on-month revenue.
Settings and roles
- Company details and logo
- buffer hours
- free-cancel window
- no-show hours and maximum rental days. Roles admin
- manager and agent with policies. User management. Optional demo mode with a landing page and signed one-hour logins.
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| PHP | — | — | Web, API | 85.5% |
| SQL | — | — | Database | 11.5% |
| CSS | — | — | Styling | 2.4% |
| Shell | — | — | Scripts | 0.4% |
| JavaScript | — | — | Front-end | 0.2% |
- Primary language
- PHP 8.4+
- Framework
- Laravel 13.17 + Filament 5.10
- Database
- MySQL 8.0+ or MariaDB 10.6+
- Authentication
- Laravel session-based authentication with Filament admin panel
- Licence
- Single-site
- Screens
- 28
- Database tables
- 14
- Supported languages
- English only
- Browser support
- Modern browsers (Chrome, Firefox, Safari, Edge — last 2 versions)
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB RAM | 1 GB RAM |
| OS | PHP 8.4+ with nginx or Apache, MySQL 8.0+ or MariaDB 10.6+, Node 20+ only to build assets | PHP 8.4+ with nginx or Apache, MySQL 8.0+ or MariaDB 10.6+, Node 20+ only to build assets |
| Est. monthly hosting | $12 | $12 |
```bash cat > .env <<ENV APP_KEY=base64:$(openssl rand -base64 32) DB_PASSWORD=$(openssl rand -hex 16) SEED_ADMIN_EMAIL=you@yourcompany.com SEED_ADMIN_PASSWORD=choose-a-strong-password APP_URL=https://rentals.example.com APP_PORT=8080 ENV docker compose up -d --build ```
```bash # create a MySQL database "rental", unzip into /var/www/rental, then composer install --no-dev --optimize-autoloader npm ci && npm run build cp .env.example .env && php artisan key:generate # set DB_*, SEED_ADMIN_* and APP_URL in .env php artisan migrate --seed --force && php artisan storage:link # point nginx at /var/www/rental/public (see HowToSetup.md) ```
```bash composer install && npm ci && npm run build cp .env.example .env && php artisan key:generate # create a MySQL database, set DB_* and SEED_ADMIN_* in .env php artisan migrate --seed && php artisan serve ```
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (3 minor)
Good module boundaries with some duplication and oversized service classes; database access is safe; minor schema gaps (missing indexes on foreign keys); strong authentication on all mutating endpoints; minor ownership gaps on public booking views. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.