Skip to content
VibeFather
Join

2 cases built from this template

Same prompt, different [VARIABLES]. Click one to preview it above.

About this template

Car Rental Booking Website is a complete, client-side rental experience for an invented mobility brand. It is designed for rental operators, travel startups, and small businesses that need more than a fleet brochure: visitors can search by location and dates, compare suitable vehicles, configure a rental, and finish a clearly labeled mock reservation.

The visual direction pairs warm stone surfaces with deep forest typography and cobalt controls. Large editorial vehicle photography gives the search-first hero a strong sense of place, while rounded cards, compact specification labels, and a persistent booking summary keep the denser screens easy to scan. Bricolage Grotesque headings add character without making the working interface feel decorative.

The connected interaction model is the main feature. Search details carry into a filterable results view with class, seat, transmission, price, and sorting controls. Each generic vehicle has its own rate and specifications. The detail view adds protection plans and useful extras, then recalculates the rental subtotal, fees, tax, and total immediately. A three-step checkout validates driver and demo payment details before producing a local confirmation. All non-sensitive booking state survives page refreshes; payment fields remain in memory.

Customize the brand, city, audience, and promise through four variables, with fleet data, rates, copy, reviews, and policies centralized in one content file. Five generated generic vehicle images and a wide hero scene are bundled locally. A mobile filter drawer and collapsible price summary preserve the same flow on narrow screens. The finished site is fully static, responsive at desktop and mobile sizes, and uses reduced-motion-aware transitions. No accounts, payment processing, APIs, or reservation backend are required.

The template prompt

The live demo was built from exactly this text — nothing added. The other cases only change the values of the [VARIABLES].

# Car Rental Booking Website

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
Build a polished, multi-view car-rental booking website for [BRAND], serving [AUDIENCE] around [CITY]. The experience runs from a search-first homepage through filterable fleet results, a configurable vehicle detail, and a three-step mock checkout to a local confirmation. Use [BRAND_PROMISE] as the central customer promise and make every price visible before the final demo action.

- Audience: The primary visitors are [AUDIENCE] who want to compare practical rental options quickly, understand what is included, and know the full price before reserving. The template owner is a rental operator, travel startup, or small mobility business that needs a realistic booking interface without backend infrastructure.
- Goal: Help a visitor find a suitable generic vehicle, adjust dates, protection, and extras with immediate price feedback, then complete a believable but explicitly simulated reservation. Keep all fleet, policy, location, rate, and marketing content easy to replace in one content file.
- Tone: Calm, precise, and travel-literate rather than aggressive or luxury-obsessed. Use concise labels, specific inclusions, plain-language policies, and warm editorial copy. The interface should feel dependable and tactile, with no pressure timers, invented scarcity, or hidden fees.

## Stack
- Framework: Vite 6 + React 19 + TypeScript
- Styling: Tailwind CSS 3.4
- Libraries: motion 12 (MIT), lucide-react (ISC), @fontsource-variable/bricolage-grotesque (OFL), @fontsource-variable/inter (OFL)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Scaffold a Vite React TypeScript project at the repository root. Set vite.config.ts to base: './', build.outDir to 'dist', build.sourcemap to false, and build.emptyOutDir to true; npm run build must create only the production site in dist/.
  - Configure Tailwind in tailwind.config.ts with the exact color tokens and font families below. Put global styles, focus states, native date-control styling, print rules, and reduced-motion overrides in src/index.css.
  - Import Bricolage Grotesque and Inter from the two Fontsource variable packages in src/main.tsx. Do not use any remote font stylesheet.
  - Wrap the app in MotionConfig with reducedMotion='user'. Use Motion and AnimatePresence for the specified route, filter, drawer, and checkout transitions; do not add another animation or routing library.
  - Implement a small hash router using window.location.hash and the hashchange event for index.html, #/results, #/vehicle, #/checkout, and #/confirmation. Render index.html content for an empty or unknown hash, and use ./index.html for the home link.
  - Keep every string, variable value, location, vehicle, rate, extra, protection plan, review, policy, and FAQ in src/content.ts. Rewrite variable-dependent copy coherently when the values change; never scatter default brand content through components.
  - Manage search, filters, selected vehicle, extras, protection, and checkout step in one React context with useReducer. Persist only non-sensitive booking state to sessionStorage under the generic key 'rental-booking-v1'; keep card, expiry, and security-code values only in component memory.
  - Use native date inputs and a shared UTC-based rental-day calculation. Default pickup to three days after the visitor's local today and return to six days after today, reject return dates on or before pickup, and calculate rentalDays as max(1, round((returnUTC - pickupUTC) / 86400000)).
  - Create a simple original SVG favicon and route mark from two curved road lines in a rounded square. Use Lucide icons for interface controls only, with accessible labels for icon-only buttons.

## Variables
- [BRAND] — Rental brand (default: "Morroway"). An invented short rental-company name; use it in the wordmark, title, copy, and confirmation.
- [CITY] — Primary service area (default: "Portland, Oregon"). The main pickup region used in search defaults, hero copy, and location guidance.
- [AUDIENCE] — Primary travelers (default: "weekend travelers and small families"). A lowercase phrase describing the people the fleet and copy should serve.
- [BRAND_PROMISE] — Customer promise (default: "Clear prices. Easy roads."). A short original promise used as the hero eyebrow and closing statement.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/car-rental-booking-website in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

Join Pro early access →

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "Car Rental Booking Website"
colors:
  canvas: "#F4F1EA"
  surface: "#FFFEFA"
  ink: "#14251F"
  muted: "#65716B"
  line: "#D9DDD5"
  cobalt: "#2855D9"
  cobalt_dark: "#1D3FA6"
  sun: "#E7B95C"
  forest: "#10231C"
typography:
  display_and_vehicle_names: { family: "Bricolage Grotesque Variable, sans-serif", weights: [600, 700] }
  body_labels_prices_and_controls: { family: "Inter Variable, sans-serif", weights: [400, 500, 600, 700] }
spacing: "Use an 8px base grid and a 1320px max-width container with 32px desktop gutters and 20px mobile gutters. Desktop sections have 112px vertical padding, compact app views 48px, and mobile sections 72px. Hero heading is 76px/0.96 with -0.045em tracking on desktop and 44px/1.02 on mobile; section headings are 42px/1.08 desktop and 32px mobile; body copy is 16px/1.65; labels are 12px/1.3 with 0.08em uppercase tracking. Form controls are at least 48px high with 12px vertical and 16px horizontal padding."
radius: "Use 28px for the hero and large media, 20px for vehicle and summary cards, 14px for inputs and option cards, and 999px for buttons, chips, and small badges. Use 1px Line borders and soft 0 16px 48px rgba(20,37,31,0.08) shadows only on floating search, drawer, and sticky-summary surfaces."
---

# Car Rental Booking Website — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Canvas** `#F4F1EA` — Main warm-stone page background
- **Surface** `#FFFEFA` — Cards, forms, search panel, and checkout surfaces
- **Ink** `#14251F` — Headings, primary text, and dark buttons
- **Muted** `#65716B` — Secondary text and specification labels
- **Line** `#D9DDD5` — Hairline borders, separators, and inactive controls
- **Cobalt** `#2855D9` — Primary actions, selected filters, links, and focus rings
- **Cobalt Dark** `#1D3FA6` — Primary-action hover state
- **Sun** `#E7B95C` — Small recommendation badges and confirmation accent only
- **Forest** `#10231C` — Closing callout and footer background

## Typography
- **Display and vehicle names** — Bricolage Grotesque Variable, sans-serif (OFL), weights 600/700. Self-host the font files.
- **Body, labels, prices, and controls** — Inter Variable, sans-serif (OFL), weights 400/500/600/700. Self-host the font files.

## Spacing & shape
- Spacing: Use an 8px base grid and a 1320px max-width container with 32px desktop gutters and 20px mobile gutters. Desktop sections have 112px vertical padding, compact app views 48px, and mobile sections 72px. Hero heading is 76px/0.96 with -0.045em tracking on desktop and 44px/1.02 on mobile; section headings are 42px/1.08 desktop and 32px mobile; body copy is 16px/1.65; labels are 12px/1.3 with 0.08em uppercase tracking. Form controls are at least 48px high with 12px vertical and 16px horizontal padding.
- Radius: Use 28px for the hero and large media, 20px for vehicle and summary cards, 14px for inputs and option cards, and 999px for buttons, chips, and small badges. Use 1px Line borders and soft 0 16px 48px rgba(20,37,31,0.08) shadows only on floating search, drawer, and sticky-summary surfaces.

## Motion
- On initial home load, reveal the hero photograph with a 600ms clip-path inset animation and lift the search panel 16px into place over 450ms; do not animate the headline letter by letter.
- Use AnimatePresence with 180ms opacity and 8px vertical transitions when result cards reorder or disappear after filtering. Update the result count immediately and never delay interaction for animation.
- Route changes use a 220ms fade and 10px upward settle. Checkout steps use the same 220ms horizontal-free transition, with focus moved to the new step heading.
- When a price input changes, flash the total's background from rgba(40,85,217,0.10) to transparent over 180ms without rolling or scrambling digits.
- Mobile filter and summary drawers slide 24px from the bottom over 240ms with a dimmed backdrop; trap focus, close on Escape, and restore focus to the trigger.
- Disable nonessential transforms, clip reveals, and smooth scrolling under prefers-reduced-motion; state changes must remain immediate and understandable.

## Imagery
Use one coherent set of six locally bundled editorial automotive photographs: a wide generic crossover in an open Pacific Northwest-inspired road scene for the hero, plus five generic unbranded vehicles on a consistent warm concrete lot with a soft forest edge. Warm overcast daylight, muted stone and forest tones, subtle cobalt details, and restrained 35mm-style perspective unify the set. Every vehicle must be a fictional generic shape with smooth simple panels, blank plates, no badges, no logos, no text, and no resemblance to a production model. No people are needed. Crop card images at 4:3 and the hero at 16:9 with object-fit: cover; the selected vehicle image becomes the large visual anchor on the detail view.

## Tone
Calm, precise, and travel-literate rather than aggressive or luxury-obsessed. Use concise labels, specific inclusions, plain-language policies, and warm editorial copy. The interface should feel dependable and tactile, with no pressure timers, invented scarcity, or hidden fees.

---
— Prompt by VibeFather · https://vibefather.ai/t/car-rental-booking-website · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown