Skip to content

Under the hood

The photographer behind this site also builds software. Here's what it runs on.

Framework
Astro with React islands, TypeScript end to end
Styling
Tailwind CSS v4 with a custom dark, earthy palette
Motion
GSAP ScrollTrigger and Lenis smooth scrolling
Hosting
Vercel, with a preview deploy for every pull request
Database
Neon Postgres with Drizzle ORM; migrations run on each production deploy
Photos
Resized to three WebP sizes in the browser before upload, stored in a private Backblaze B2 bucket and served through the site
Camera data
Read from each photo's EXIF on upload, then shown under the photo
Admin
Email and password sign-in with scrypt-hashed passwords; every edit saves as you go
Messages
Contact notes are saved to the database, with no third-party email service
CI
GitHub Actions: type checks, linting, formatting and a production build