Healthcouch is a website template for health coaches, wellness studios and lifestyle coaching programmes, built on Bootstrap 5. The layout is responsive and mobile-ready. There are eleven pages: home, about, services, journal, five article pages, contact and elements.
The home page has a hero with a video button, an about section, three coaching services, a testimonial slider, a video section, nutrition tips and a call to action. The inner pages add coaching programmes, a journal of five articles with a topic filter and search, article pages with an author box, comments and a comment form, a contact page with a contact form, contact details and a map that loads on click, and an elements page with typography, buttons, lists, tables, forms and an image gallery with a lightbox. The demo copy is about everyday habits: food, movement, sleep and stress. Healthcouch gives you a ready-made site for a coaching practice.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.1.3 and jQuery), compiled from Sass with only the parts the pages use and the original 1,200 px layout, and plain JavaScript with no jQuery. Swiper 14 replaces Slick on the testimonial slider, PhotoSwipe replaces Magnific Popup in the Elements gallery, a video dialog plays the videos, a keyboard-operable panel replaces the old mobile menu plugin, the selects are native, and unused plugins such as Owl Carousel, WOW, CounterUp and a date picker are gone. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the home page went from 4.5 MB and 65 requests to 625 KB and 30 requests, and the contact page from 3.1 MB to 346 KB. Every photo has an AVIF version with the original as the fallback, real dimensions and lazy loading below the first screen, the hero is one static slide (the second slide was an identical copy), and the loading screen that hid every page until it had loaded is gone. The download went from 12.4 MB to 5.5 MB.
No third-party requests: Poppins is self-hosted, the icon fonts are replaced by Lucide SVG icons and a small social-logo subset (the Twitter bird is now the X logo), the videos load from YouTube’s privacy-enhanced player only after a click, and a Google Analytics 4 snippet stays commented out until you add your own ID. The contact page map is an OpenStreetMap map (no API key needed) that loads only when a visitor clicks “Show map”. Before, every page loaded its fonts from Google Fonts and the contact page loaded the Google Maps script.
Working forms: the contact form, the newsletter forms in the footer and the journal sidebar, the article comment forms and the Elements sample form send through includes/send-email.php (PHP on your host), with validation, a spam trap and the result shown on the page. The Make an Appointment buttons and the service and programme links open the contact form with the subject filled in.
Accessibility: a skip link, landmarks and one h1 per page, labels on every field, names on the logo, play buttons and icon links, keyboard access to the Blog submenu, visible focus rings, reduced-motion support and WCAG AA text contrast, with dark text on the brand green, a darker green for green text and darker greys (the lowest ratio is 5.5:1).
Fixed: the testimonial arrows and numbers were hidden on phones (they now show below the client’s name as 48 px and 44 px buttons); 180 links pointed nowhere, and every link and button now goes to a real page, section or action; the journal sidebar’s categories, tags and search had nothing behind them and now filter the journal; the Elements page scrolled sideways at tablet width; and the footer menu had a broken tag.
Demo content: health-coaching copy on every page, three distinct services (they were three copies of one), coaching programmes, testimonials from fictional clients with initials avatars, everyday nutrition tips, five journal articles that match their photos, each with its own page, and fictional contact details.