About Still / Frame
Still / Frame is a six-page photography portfolio template with a dark canvas, persistent desktop navigation and a contact-sheet composition. The index groups six sample photographs by subject; the Between places photo story gives each image space, location information, source credits and a short note. Both image-heavy pages use a native modal viewer with keyboard controls.
Best suited to: Independent photographers and small studios working in travel, landscape or architecture who need an image-first portfolio and commission enquiries.
Desktop and mobile screenshots
Captured from version 1.0.0 on 29 October 2026. Open a screenshot to inspect the full page.







Choose your download
Both ZIPs contain the same 6-page design. Neither requires an account, subscription, or license key.
| Edition | Included files and requirements |
|---|---|
| Plain HTML ZIP 2.63 MiB |
Six HTML pages, CSS, browser JavaScript, responsive local images, local fonts, manifest, and license/setup notes. Requires: Any static host; no Node or build step required. |
| Standalone Astro source ZIP 2.68 MiB |
Editable Astro pages and components, site/image configuration, CSS and browser JavaScript, vendored kit, standalone lockfile, local assets, manifest and documentation. Requires: Node.js >=22.23.4 and npm >=9.6.5. No factory workspace, account, API key or hosted service required. |
What’s in the design
- Home presents six photographs at varied sizes, with portrait and landscape compositions, locations and a persistent desktop navigation column.
- The index filters six frames by Travel (two), Landscape (three), or Architecture (one), with an announced result count.
- Between places is one six-image photo story with image notes, locations, original photographer/source links and direct image anchors; it is not six separate series pages.
- The native image viewer has Previous/Next buttons, arrow keys, Escape dismissal and focus restoration. Filtering limits the images available within the viewer.
- About includes the portfolio concept, commission considerations and a complete image-credit list. Contact prepares a reviewable email draft without sending or storing messages.
- All six sample photographs are credited to Luca Bravo, not the fictional portfolio owner. Public Sans, images, styles and browser scripts are served locally.
Verified page layouts
These 6 pages are included in both archives. Each link opens the live preview.
- Home
index.html - Photographic index
projects.html - Between places photo story
project.html - About
about.html - Contact
contact.html - 404
404.html
How the enquiry form works
The form validates required name, email and message fields, then prepares an encoded email-draft link. Nothing is sent or stored by the website. A visitor opens the draft in a configured email app, reviews it and sends it themselves. Without JavaScript a direct email link remains available.
The default recipient, [email protected], is reserved .example data and cannot receive mail. Replace it before launch. No appointment, quote or commission is confirmed. Direct delivery requires a separately configured and tested backend.
Set up the Astro edition
Extract the source ZIP and run these commands from its folder:
npm ci
npm run dev
npm run check
npm run build
The build produces a dist/ folder for static hosting. The source includes its shared template kit under vendor/template-kit, so it builds independently of our development workspace. Astro 7.4.4 and the Astro checker 0.9.12 are pinned; TypeScript 6.0.3 is the latest supported by that checker’s declared peer range.
Before you launch
- Choose HTML for direct file editing or Astro for shared layouts and source-driven content.
- Replace the fictional identity, contact address, project text and sample work with accurate information and properly licensed imagery.
- Edit src/site.ts for the six frames, subjects, captions, locations and source links.
- Update src/images.json, responsive image variants, alt text and asset credits when replacing pictures. Preserve correct photographer attribution for any retained sample work.
- Replace the reserved .example recipient in src/site.ts, or every mailto link and form data-recipient in HTML. The form only prepares an email draft.
- Set PUBLIC_SITE_URL to your actual domain or folder URL, with a trailing slash, when building Astro. This generates canonical/social URLs, robots.txt and a five-page sitemap. Leave PUBLIC_PREVIEW unset for production.
- Upload the complete HTML folder or Astro dist/ contents. Configure the host to return 404.html with HTTP 404 status for unknown URLs.
A static portfolio with no CMS, cloud account, checkout, appointment system or message-delivery backend. Filtering and the viewer use progressive enhancement. The default enquiry workflow requires an email app. There is one six-image photo story; this release does not include multiple generated series pages.
License and assets
The original template code is released under the included MIT license. It permits personal and commercial use; retain the license notice when redistributing the code. Visible footer attribution is optional.
Every sample photograph is by Luca Bravo under the Unsplash License. The fictional portfolio identity does not claim authorship, affiliation or endorsement. Source links are included in the About and photo-story pages and in ASSETS.md. Public Sans uses the SIL Open Font License. Unsplash License. Full asset credits.
Release verification
Both release archives were extracted and inspected. The standalone source passed a clean npm ci, Astro check and production build outside our workspace. Its six HTML pages match the HTML edition byte for byte. All pages were checked at a 320px viewport with no horizontal document overflow. Local Lighthouse checks scored 98–100 for performance and 100 for automated accessibility on tested pages/devices; these are lab results, not a full accessibility certification.
Version 1.0.0, reviewed 29 October 2026. Live preview. Plain HTML checksum. Standalone Astro source checksum. Still / Frame is a fictional portfolio identity. All sample photographs are credited to their actual photographer, Luca Bravo.



