Passport is a travel agency website template built on Bootstrap 5. The home page opens with a full-screen photo hero and a video link, followed by an about block, a destinations slider, testimonials, an FAQ accordion and recent blog posts. There are six pages: home, about, services, blog, a single blog post and contact.
Services shows eight services with icons, the blog has a post list, a post page with comments and a sidebar, and the contact page has a working contact form. The layout is responsive, and the menu has a dropdown and a slide-in panel on phones. Change the copy, photos and colours to build a site for a travel agency, tour operator or holiday planner.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used a Bootstrap 5.0 alpha stylesheet) compiled from Sass, and plain JavaScript with no jQuery. Swiper 14 powers the sliders, a small built-in module handles the menu, scroll animations and the video dialog, and npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the six pages together went from 10.2 MB and 166 requests to 4.6 MB and 85 requests, and the home page from 2.7 MB and 34 requests to 1.2 MB and 23. Every photo has an AVIF version with a JPEG fallback, real dimensions and lazy loading below the first screen.
No third-party requests: Open Sans and Playfair Display are self-hosted, the icon fonts are replaced by Lucide SVG icons and a small social-logo subset, and the page preloader is gone.
New royalty-free photos throughout, new testimonial and author portraits, and travel copy in place of placeholder text.
Accessibility: skip link, landmarks, one h1 per page, labelled form fields, keyboard access to the menus, sliders and FAQ, and text colours that meet WCAG AA contrast (including text over the hero photo).
Working forms: the contact and comment forms validate, send through a PHP mail handler and show the result on the page; the blog search is a GET form.
Fixes: no sideways scrolling on phones, icons that never loaded now show, the thank-you page no longer loads its logo from another site.