DentaCare is a website template for dental clinics and practices, built on Bootstrap 5.3.8. It has seven pages: home, about, services, doctors, blog, a single blog post and contact.
The home page opens with a full-width photo slider over a strip with emergency contact details, opening hours and an appointment form with date and time fields. Below it are service cards, an about block with a checklist, a team of dentists, achievement counters, pricing plans, a newsletter band, testimonials in a slider, a photo gallery that opens in a lightbox, the latest posts, a quote form and a map that loads on click. The services page lists eight treatments and the pricing plans, the doctors page shows the whole team, and the blog has a post with comments and a sidebar. The layout is responsive and mobile-ready.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.1.0 and jQuery), compiled from Sass together with the theme and the Bootstrap 4 proportions the design was drawn with, and plain JavaScript with no jQuery. Swiper 14 replaces Owl Carousel, Jarallax replaces Stellar and Scrollax, PhotoSwipe replaces Magnific Popup on the gallery, a small built-in module replaces Waypoints, AOS and animateNumber, and the date and time pickers are the browser’s own fields. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: all seven pages together went from 15.9 MB and 317 requests to 5.5 MB and 186 requests, the home page from 3.3 MB and 62 requests to 1.3 MB and 41, and the contact page from 2.0 MB and 46 requests to 0.6 MB and 21. Every photo has an AVIF version with a JPEG fallback sized to what the page shows, and the full-page preloader is gone.
No third-party requests: Open Sans is self-hosted, the Ionicons, icomoon, Open Iconic and Flaticon fonts are replaced by Lucide SVG icons and a 1 KB social-logo subset, the map is an OpenStreetMap embed (no API key) that loads only when a visitor clicks Show map, and a Google Analytics 4 snippet stays commented out until you add your own ID. Before, every page loaded Google Fonts and the Google Maps script with a sample key.
Working forms: the appointment, quote, contact and comment forms send through php/send-email.php and the newsletter through php/subscribe.php, with validation, a spam trap and an in-page message. Before, they had no action and no field names, so nothing could be sent.
Accessibility: a skip link and a main landmark on every page, one h1 per page, a real menu button, names on image, icon and social links, visible focus rings, reduced-motion support and WCAG AA text contrast, with a darker brand blue and teal, darker greys and a scrim behind the white header and hero text.
Fixed: links to pages that did not exist (a team page and a gallery page) and about 290 placeholder links now go to real pages, the two appointment forms on the home page no longer share field ids, and breadcrumbs and blog categories match the dental clinic.
Demo content: new Unsplash photos, fictional dentist names and contact details, and initials avatars for testimonials and comments.