Lawncare is a website template for lawn care, gardening and landscaping companies, built on Bootstrap 5. The layout is responsive and mobile-ready, and the page headers scroll with a parallax effect. There are seven pages: home, about, services, gallery, blog, blog post and contact.
The home page has a full-screen hero, service cards, an about section with a video, a seasonal tips slider, a call-to-action band with the phone number, a testimonial slider, recent blog posts and a newsletter sign-up. The inner pages add the company story and testimonials, the services with seasonal tips, a project gallery with a lightbox, a blog and a post with comments and a sidebar, and a contact page with the contact details and a working contact form. Lawncare gives you a ready-made site to present a lawn care or landscaping business, its services and its work.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.2.1 and jQuery), compiled from Sass together with the theme and the design’s original proportions, and plain JavaScript with no jQuery. Swiper 14 replaces Owl Carousel on the seasonal tips and testimonial sliders, PhotoSwipe replaces Magnific Popup in the gallery, the video opens in a built-in dialog, Jarallax replaces Stellar on the page headers and a small built-in module replaces Waypoints and animate.css; Scrollax and jquery.easing, which had nothing to act on, are gone. Lucide SVG icons and a 1.2 KB social-logo subset replace Font Awesome 4.7, Ionicons, IcoMoon and Flaticon (the Twitter bird is now the X logo). npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the home page went from 5.9 MB and 57 requests to 1.8 MB and 30 requests, and the contact page from 4.9 MB to 1.2 MB. Every photo has an AVIF version with the JPEG as the fallback, each page preloads its header photo, the photos in the blog post have real dimensions and load lazily, the large background photos are re-encoded, and unused images are gone, as is the full-page preloader that hid every page while it loaded.
No third-party requests: Poppins and Lato are self-hosted, the video loads 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. Before, every page made requests to six outside hosts: Font Awesome from a CDN, its web fonts from Google Fonts, Google Analytics, and the Google Maps script, which had no map to show and threw an error.
Working forms: the contact form sends through includes/send-email.php and the newsletter form on every page through includes/subscribe.php, with validation, a spam trap and an in-page message, and the header and sidebar searches open the blog. Before, the contact form had no action and the newsletter form posted nowhere, so nothing could be sent.
Accessibility: a skip link and a main landmark on every page, one h1 per page, labelled form fields, names on icon-only links and buttons, a mobile menu that closes with Esc, gallery zoom buttons that also show on keyboard focus, visible focus rings, reduced-motion support and WCAG AA text contrast. The brand green is deeper, so white text on the menu bar, buttons and green bands and green text on white are readable (white on the old green was 3.7:1 and the yellow active menu link 2.6:1); body text is a darker grey, and darker shades sit behind the text on the hero, page-title and gallery photos.
Fixed: the contact page showed “Your message was sent, thank you!” above the form before anything was sent (it now appears only after the message is sent); the nine gallery captions linked to a page that was never included (they are captions now, and the zoom buttons open the lightbox); the footer opening hours ran together on one line (one entry per line now); and buttons, service arrows, post titles, “Read more” links, tags and pagination that pointed to “#” now go to the matching pages.
Demo content: lawn care copy for the services, seasonal tips, blog posts and gallery captions instead of placeholder and off-topic filler text, five different testimonials (they were five copies of one), a fictional blog author, address, phone and email (the site had three different phone numbers), a stock nature clip instead of an unrelated promotional video, corrected typos, and three photos that showed brand markings on a tractor and a mower are replaced with Unsplash photos without brand markings.