Skip to content

Aperture

Photography / Portfolio Pro HTML

Gallery-grade photography portfolio. A semantic light/dark canvas, a cursor-follow work index, numbered series, a keyboard lightbox, and a persistent light/dark toggle.

$59 $49 launch sale

Editions: Astro (source), HTML (plain files, no build).

Read the Aperture docs Lifetime updates Personal & client use
All-Access Pass

One payment for Aperture and everything else - all 31 themes, every future release, and the visual builder included.

$1371 $199 one-time
Get the All-Access Pass
A closer look

See Aperture in action

Every page and section is part of the download. Use these as launch-day templates - keep the structure, swap the copy.

Homepage hero - dark mode
Work index - hover a title and its photo follows the cursor
Commissioned work - shown on the black canvas
Journal - notes from the field
Editing live in the AeroLaunch visual builder
11
Page types
14
Sections
Light + Dark
Variants
White / Black
Semantic Canvas

Aperture is for photographers who want their site to feel like a gallery wall, not a marketing page. Its signature idea is a semantic dual canvas: personal work is shown on white, commissioned work on black, so the background itself means something. The work index is a quiet list of titles - hover one and its photograph follows your cursor. Series run as numbered sequences (01 / NN). A persistent light/dark toggle lets every visitor choose. No masonry, no price cards, no testimonials carousel - the photographs do the talking.

Best Fit For

  • Portrait, landscape, and editorial photographers
  • Commercial photographers and studios
  • Visual artists and image-led creatives
  • Studios shooting commissioned + personal work
  • Anyone who wants fine-art, not template

Full Page Set

Every page is real and editable - no placeholders, no "coming soon" stubs.

Home
Work
Series Detail
About
Journal
Journal Post
Contact
All Sections
Privacy
Terms
404

14 Sections Included

Every section is a ready-to-use Astro component. Add it to any page, customize via config, or remove what you don't need.

Header + Theme Toggle
Sticky hide-on-scroll header, up to four links, mobile drawer, and a sun/moon light/dark toggle that persists
Hero
Oversized serif name over a single full-bleed signature frame, with role · location + availability
Selected Frames
Strict gallery grid - wide frames span full width, portraits pair up, numbered captions, lightbox
Commissioned Band
Full-bleed dark band that demonstrates the semantic system - commissions 'shown on black'
Work Index (cursor-follow)
Signature: a text list of projects where hovering a title makes its photo follow the cursor
Featured In
Restrained client & press credits - publication names, not a testimonials carousel
About
Sticky portrait beside a short bio, italic lead, representation line, and four plain facts
Journal Grid
Three-column writing grid with graded thumbnails from astro:content
Page Header
Reusable interior header - small overline, large italic title, optional subtitle
Contact Form
Underline-only inquiry form, provider-switched (Formspree / FormSubmit / Netlify)
Series Sequence
Per-project layout: numbered full-width frames (01 / NN) with prev/next, on its mode's canvas
Lightbox
Keyboard-navigable image lightbox behind every gallery image
Light / Dark
Whole-site light/dark toggle, persists in localStorage, pre-paint script prevents FOUC
Footer
Always-dark footer with a large inquiry CTA, email, menu, and social

What's Included

Semantic dual canvas - mode: personal renders on white, commissioned on black; page, nav, and type all flip
Cursor-follow work index - hovering a project title reveals its cover trailing the cursor
Numbered series sequencing (01 / NN) with prev/next
Light / dark toggle - persists in localStorage, pre-paint script prevents FOUC
Keyboard-navigable lightbox (←/→/Esc)
'Selected clients & press' credits instead of a testimonials carousel
Two Astro Content Collections: series + journal, with a mode field
Contact form (Formspree / FormSubmit / Netlify) + All-Sections gallery

The Background Means Something

Set a series to mode: 'personal' and it renders on white; set it to 'commissioned' and the whole page, nav, and type flip to black. The background becomes a quiet system that tells the viewer what they're looking at - the signature move of the best photographer sites, built in.

Hover, and the Image Follows

The work index is a plain text list of project titles. Hover one and its photograph appears and trails your cursor across the screen. It's the single interaction that reads 'real photographer, not a template,' and on touch devices it falls back to clean inline thumbnails.

Light or Dark, Their Choice

A sun/moon toggle in the nav flips the entire site and remembers the choice per visitor, with a pre-paint script so there's never a flash. Personal work still defaults to white and commissions to black - but the viewer always has the final say.

Set up in minutes

Forms, newsletter, and analytics - pre-wired

Aperture is ready to connect to your preferred providers. Pick from the options below, drop in a single API key, and your contact form, newsletter signup, and analytics are live - no backend, no JavaScript, no glue code.

Contact form

The Contact section's <form> renders with no JS. Set one provider in site.ts; the form action wires automatically.

  • Formspree
    50 free submissions / month, no domain restriction
  • FormSubmit
    Free, no signup - just an email confirmation
  • Netlify Forms
    Free 100/month - Netlify hosting only
Setup guide

Newsletter

The Newsletter form sends subscribers directly to your ESP. The email input name auto-adjusts per provider.

  • Mailchimp
    Standard EMAIL field; honeypot supported
  • ConvertKit (Kit)
    email_address field; works with any form ID
  • Buttondown
    email field; lightest, indie-friendly
Setup guide

Analytics

Layout.astro injects the right script tag based on the provider you choose. No client-side branching.

  • Google Analytics 4
    Paste your G-XXXXXXXXXX measurement ID
  • Plausible
    Privacy-friendly, ~1 KB script, no cookies
  • Umami
    Self-hostable, also cookie-free
Setup guide

Tech Stack

Astro 7 Tailwind v4 TypeScript Responsive SEO Ready Blog Ready

Config-Driven Setup

Every theme uses a single src/config/site.ts file for customization. Change your brand, navigation, form providers, analytics, and section content without touching component code.

Full site.ts reference in the docs

site.ts
// src/config/site.ts
export const siteConfig = {
  name: "Your Company",
  tagline: "Your tagline here",
  url: "https://yourdomain.com",

  navigation: { sticky: true, links: [...], cta: {...} },
  social:     { twitter: "...", github: "...", linkedin: "..." },
  seo:        { title: "...", description: "...", ogImage: "/og.png" },

  // ── Provider switches ────────────────────────────────
  contactForm: { provider: "formspree",  formspreeId: "your-id" },
  newsletter:  { provider: "convertkit", actionUrl: "https://..." },
  analytics:   { provider: "plausible",  plausibleDomain: "you.com" },

  // ── Section data ─────────────────────────────────────
  team, video, timeline, comparison, gallery,
  carousel, tabs, appDownload, map, footer,
} as const;
HTML

The same design as plain HTML

No Astro, no npm, no build step. Unzip the folder, open index.html straight from your disk and it works. Every page is a plain .html file you edit in any editor, the styling lives in one readable CSS file with the colours at the top, and an optional Tailwind folder is there if you want utility classes back. Deploy it to any static host: Netlify, Cloudflare Pages, GitHub Pages or plain cPanel.

Full documentation, ready before you buy

Browse the install guide, the site.ts reference, provider setup, deploy instructions, and the Aperture-specific page - all live now.