Skip to content

Barbershop Homepage Template

Dark Bootstrap 6 barbershop homepage with a drawer navbar, price-list tabs, barber cards, a booking form with Combobox and Datepicker, reviews, live opening hours and a footer.

Live preview

Open in new tab

Code

A dark, old-school barbershop homepage built with Bootstrap 6 for a fictional shop called Northgate Barber Club, with a price list, barber profiles, online booking, reviews and live opening hours.

How it works

Everything sits inside .nb-page, which carries data-bs-theme="dark" and re-maps the Bootstrap 6 primary role (--bs-primary-bg, --bs-primary-contrast and friends) to brass. Fonts: Oswald and Karla.

  • Navbar: navbar lg:navbar-expand with a <dialog class="drawer drawer-end">. Below 1024px the toggler opens the drawer; the script syncs aria-expanded and closes it after an in-page link. "More" opens a .menu with menu-item-icon and menu-item-description.
  • Hero: a striped barber pole (.nb-pole), headline, calls to action and quick facts. The .nb-ticket card shows the next open chair, computed from NB_HOURS in script.js relative to the visitor's clock.
  • Services: nav nav-underline tabs switch three .tab-pane price lists. Each .nb-price-row has a dotted .nb-leader.
  • Barbers: four cards with Unsplash photos and .chip specialties. A data-nb-barber button preselects that barber in the booking form and scrolls to it.
  • Booking: <form data-bs-validate novalidate> with a searchable Combobox (data-bs-toggle="combobox") for the service, a Datepicker limited to today plus 60 days, btn-check radio labels for time slots and a .switch. On submit the script checks the Combobox's hidden service input, flags invalid fields with .is-invalid, shows a spinner and opens #nb-toast with the chosen date and time.
  • Reviews, visit and club: rating bars built with .progress, quote cards, an hours table whose current day gets .nb-today, an open/closed badge, an SVG street map and a membership CTA.

Customization

  • Change --nb-brass, --nb-red and --nb-blue in .nb-page (style.css) to rebrand; update the --bs-primary-* overrides beside them so buttons follow.
  • Edit NB_HOURS in script.js and the data-nb-day rows of .nb-hours together when your opening hours change.
  • Add or remove time slots by copying a btn-check label inside .nb-time-grid.
  • Add services as .menu-item buttons with a data-bs-value in the Combobox menu.
  • Replace the setTimeout in the submit handler of script.js with fetch() to your booking endpoint.
  • Remove .nb-quote-accent from the second review to make all quotes look the same.
  • The photos come from Unsplash; replace them with pictures of your own shop and team.

Accessibility

A skip link jumps to #nb-main. Tabs use role="tab" with aria-selected, time slots sit in a fieldset with a legend, the map is one role="img" with a label, and the next-chair card and toast are polite live regions. Focus rings are visible in brass, and the pole animation and hover effects stop under prefers-reduced-motion.

Bootstrap 6 notes

Built on Bootstrap 6.0.0-alpha.1 (alpha APIs can still change). Coming from Bootstrap 5: the navbar uses lg:navbar-expand with a Drawer instead of navbar-collapse, Dropdown is now Menu, form-select is gone (a <select class="form-control"> is used), validation uses data-bs-validate instead of needs-validation, and the Combobox and Datepicker are new built-in components. After a simulated booking the form keeps its values, because the Combobox has no public reset method.

Requirements

Add these to your page (already included in the download):

  • <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@6.0.0-alpha.1/dist/css/bootstrap.min.css">
  • <script type="module" src="https://cdn.jsdelivr.net/npm/bootstrap@6.0.0-alpha.1/dist/js/bootstrap.bundle.min.js"></script>
  • <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
  • <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=Karla:wght@400;500;600;700&display=swap">

Built for Bootstrap 6.0.0-alpha.1. Bootstrap 6 ships as an ES module, so its script and this component's JavaScript load with type="module". Alpha releases can still change before the stable version.

Barbershop Homepage Template – Bootstrap 6 home pages component screenshot
Barbershop Homepage Template · Bootstrap 6 Home Pages

More Home Pages

Fitness Gym Homepage Template – Bootstrap 6 home pages preview

Fitness Gym Homepage Template

Dark Bootstrap 6 gym homepage with drawer navbar, photo hero, programs, a weekly class timetable, membership plans with a range-based recommender, coaches and a free-pass form.

Bakery Homepage Template – Bootstrap 6 home pages preview

Bakery Homepage Template

Warm Bootstrap 6 bakery homepage template with an arched photo hero, tabbed product menu with tray, story stepper, cake order form with datepicker, reviews and a Bread Club dialog.

Nonprofit Charity Homepage Template – Bootstrap 6 home pages preview

Nonprofit Charity Homepage Template

Warm Bootstrap 6 charity homepage with arch photo hero, impact stats, filterable causes with progress bars, an impact slider, a donation form, story carousel, FAQ and footer.

Beauty Salon Homepage Template – Bootstrap 6 home pages preview

Beauty Salon Homepage Template

Dark plum Bootstrap 6 beauty salon homepage with arched photo hero, tabbed price list with a service basket, artists, review carousel, online booking calendar and gift cards.

Pet Care and Vet Homepage Template – Bootstrap 6 home pages preview

Pet Care and Vet Homepage Template

Warm Bootstrap 6 veterinary clinic homepage with live open status, filterable services and prices, first-visit stepper, vet team, pet reviews and an appointment form.

Plumber and Home Services Homepage Template – Bootstrap 6 home pages preview

Plumber and Home Services Homepage Template

Bold navy and orange Bootstrap 6 plumber homepage with a 24/7 emergency bar, call-back form, service area map with ZIP checker, flat-rate price table, review carousel and FAQ.