Breed2 is a personal portfolio website template for art directors, designers and freelancers, built on Bootstrap 5 with a light design and a blue-to-pink gradient. The layout is responsive and mobile-ready and works in all popular web browsers. It comes with eight pages: home, about, services, portfolio, project details, blog, blog post and contact.
The home page has a hero with your name and role, statistics, an about block with a CV button, service cards, a testimonial slider, a filterable portfolio grid, the latest blog posts and a row of client logos. The inner pages add a project page with its details, a blog with a sidebar (search, categories, popular posts, newsletter and tags), a post page with comments and a comment form, and a contact page with a working contact form and a map.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.1.3 and jQuery), compiled from Sass together with the theme and the original Bootstrap 4 proportions and colours, and plain JavaScript with no jQuery. Swiper 14 replaces Owl Carousel on the testimonial and client-logo sliders, and a small built-in filter with a CSS-grid masonry replaces Isotope on the portfolio. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: all eight pages together went from 16.3 MB and 341 requests to 5.7 MB and 219 requests, and the home page from 2.9 MB to 1.0 MB. Every photo has an AVIF version with the JPEG or PNG as the fallback, real dimensions and lazy loading below the hero, and unused plugins such as jQuery UI, Magnific Popup, Nice Select, Stellar and a date picker are gone.
No third-party requests: Roboto is self-hosted, the Themify, Linearicons and Font Awesome icon fonts are replaced by Lucide SVG icons and a small social-logo subset (the Twitter bird is now the X logo), the map on the contact page loads from OpenStreetMap only after a click and needs no API key, and a Google Analytics 4 snippet stays commented out until you add your own ID.
Working forms: the contact form, the blog comment form and the sidebar newsletter send through php/send-email.php, with validation, a spam trap and an in-page message, and the sidebar search goes to the blog. Before, the contact form posted to a file that did not exist and the other forms could not send anything.
Accessibility: a skip link and a main landmark on every page, one h1 per page, submenus that open from the keyboard (they opened on hover only), portfolio captions that show on keyboard focus, visible form labels, names on icon-only links, descriptive alt text, visible focus rings and WCAG AA text contrast, with darker body, meta and sidebar greys and readable active menu links.
Demo content: three different testimonial authors with their own portraits, distinct project names, fictional comment authors and contact details, real links on the buttons and blog pagination, and new Unsplash photos for the blog and portfolio images that showed street-style portraits or were too small for their place.