Bridget is a minimal Hugo theme for photographers/visual artists, based on bridget-pictures-www.
Bridget treats the images as the content and keeps the UI out of the way — a white canvas, black chrome, no accent colour, so the photography supplies the only colour on the page. Hugo renders the pages and routing; a handful of SolidJS islands drive the interactive pieces — a custom cursor, the full-bleed scatter gallery, and the click-to-open focus/stage viewer. On top of the core galleries it adds blog-style Posts (prose with inline images and a lightbox) and a tag-filtered Archive.
This fork is growing Bridget from a gallery theme into a complete personal portfolio site: the galleries stay the centrepiece, with room around them for project write-ups, an about/info page, and the other pages a working portfolio needs — while holding the line on the minimal, image-first design. The exampleSite is the living test bed for that direction and doubles as the demo.
Head to this documentation for a complete guidance to get started with the theme.
- Blazingly fast: 100/100 on both desktop and mobile in Google PageSpeed Insights
- Powered by SolidJS, a declarative, efficient, and flexible JavaScript library for building user interfaces
- JS dynamic loading
- Image preloading + lazy loading
- Dynamic resolution based on view mode
- Cloud image CDN (optional): production builds can serve gallery imagery from an on-the-fly image CDN (imgix / Cloudflare Images / Cloudinary) while local dev keeps using committed low-res copies — a single
hugo.IsProduction+cdnBaseswitch, no template changes - Metadata-derived tags: extract embedded IPTC/XMP keywords into
data/imagetags.yaml, merged with hand-written front-matter tags to build the Archive filter — both sources survive re-extraction - Multiple analytics services supported (Google, Fathom, Baidu, Umami, Plausible, Cloudflare, Splitbee)
- Search engine verification supported (Google, Bing, Yandex, Pinterest, Baidu, 360, Sogou)
- Scatter gallery — the default full-bleed, click-to-focus image collection
- Posts (
type: post/postlist) — blog-style prose pages with an inline-image render hook and a click-to-open lightbox, plus a scattered post index - Archive (
type: grid) — a tag-filtered image grid with a full-screen, looping focus viewer; filter tags can be pinned first or hidden entirely via[grid]params (pinTags/hideTags)
For a cloud-backed deploy, pnpm images <masters-dir> prepares photos in one pass: it extracts embedded keywords into data/imagetags.yaml, writes EXIF-stripped, orientation-baked full-res copies for CDN upload (GPS / serial / timestamps removed), and downscaled previews committed for local dev. Originals and upload copies stay out of git (masters/, dist-images/); only the previews and the tags file are committed. Set cdnBase plus cdnHiQuery / cdnLoQuery in params to serve the full-res copies from your CDN in production — leave cdnBase empty and the theme just Hugo-processes the local previews, so the pipeline is entirely opt-in.
