Photogallery is a portfolio website template for photographers, built on Bootstrap 5, with a fixed side menu and full-screen photography. The layout is responsive and works in all popular web browsers. It comes with seven pages: home, gallery, single gallery, blog, about, contact and an elements page.
The home page is a full-screen project slider with a fading transition, a “Next” photo card and a slide counter. The gallery is a masonry grid with category filters, and each photo opens at full size in a lightbox. The single gallery page pairs a photo slider with the project details, the blog lists posts in a scrolling column, the about page has milestones and a quote banner, and the contact page has a working contact form and a map.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.2.1 and jQuery), compiled from Sass with the original proportions, and plain JavaScript with no jQuery. Swiper 14 runs the home and project sliders, PhotoSwipe opens the gallery photos, and small built-in modules replace the filter, masonry, scrollbar and progress-ring plugins. Icons are Lucide SVGs, with the X logo for Twitter.
Full-resolution photos: the heroes are 3840 × 2560 so they stay sharp on 4K and phone screens, gallery tiles load a 600 or 1200 px copy for the screen, and the lightbox shows each photo at up to 4000 px. Every photo has an AVIF version with the JPEG as the fallback.
Lighter pages: all seven pages together went from 7.3 MB and 208 requests to 5.7 MB and 108 requests, with the sharper photos included.
No third-party requests: PT Sans is self-hosted, and the contact map loads only when a visitor asks for it.
Working contact form (PHP handler with validation, a spam trap and status messages, visible labels) and a search that lists the matching blog posts.
Accessibility: a skip link, one heading per page, named buttons and links, a keyboard-friendly menu and search, gallery buttons that show on keyboard focus, and WCAG AA contrast for text.
Fixes: the home slider’s “Next” card now changes the slide, dead links and the empty “Love” filter are fixed, and each page has its own title and description.