feat: photography features & image optimizations

- Hero carousel: gallery.yaml hero accepts single UUID or array, crossfade component
- Full-bleed single albums: subpages with 1 album skip grid, render photos directly
- EXIF on hover: camera/lens/focal length overlay on grid items (toggle via exifOnHover)
- Customizable grid: columns/gap/aspectRatio/layout (masonry|uniform) via gallery.yaml
- Per-subpage grid overrides: each subpage can override global grid config
- True masonry: per-image aspect ratios from EXIF dimensions
- next/image migration: homepage hero, album covers, grid thumbnails, about portrait
- ThumbHash blur placeholders and dominant color backgrounds
- Custom next/image loader via image proxy with width/quality params
- Lightbox fade-in transition with dominant color background
- Password-protected subpages, health check, rate limiting, OG images
This commit is contained in:
ralksta
2026-02-14 10:30:27 +01:00
parent 3c69860a64
commit b7217c4a76
31 changed files with 1998 additions and 162 deletions

25
content/gallery.yaml Normal file
View File

@@ -0,0 +1,25 @@
# ── Gallery Configuration ──────────────────────────────────────
# Album and subpage definitions for your public gallery.
# Secrets (API key, server URL) stay in .env.local.
hero: 03c0df0e-01d7-4cc7-8352-cf30d2289ad6
# Standalone albums shown directly on the homepage
albums:
- a89c6085-a105-46c2-baa4-338bc69cab93
- 9aee9367-a239-4651-980d-3368bc70b7b6
# Subpages group multiple albums under one URL path
subpages:
- name: Deutschland
albums:
- 9aee9367-a239-4651-980d-3368bc70b7b6
- name: Dubai
albums:
- a89c6085-a105-46c2-baa4-338bc69cab93
- name: Polen
password: clientpass123
albums:
- 4ad0ed89-55de-4e69-937f-2d9988f63ad1

View File

@@ -0,0 +1,44 @@
# ── Gallery Configuration ──────────────────────────────────────
# Define which Immich albums to publish and how to organize them.
#
# Find album UUIDs in Immich: Albums → click album → UUID in the URL bar.
# Find asset UUIDs: click a photo → UUID in the URL bar.
# Hero image(s) shown on the homepage (Immich asset UUIDs).
# Use a single UUID for a static image, or a list for a crossfade carousel.
hero: 00000000-0000-0000-0000-000000000000
# hero:
# - 00000000-0000-0000-0000-000000000000
# - 11111111-1111-1111-1111-111111111111
# - 22222222-2222-2222-2222-222222222222
# Standalone albums — shown directly on the homepage as cards
albums:
- 11111111-1111-1111-1111-111111111111
- 22222222-2222-2222-2222-222222222222
# Show camera/lens EXIF on photo hover (default: true)
# exifOnHover: false
# Photo grid layout — customize columns, gap, aspect ratio, and mode.
# grid:
# columns: 3 # default: 3
# gap: 12 # pixels, default: 12
# aspectRatio: "1" # "1", "3/2", "auto", etc. default: "1"
# layout: masonry # "masonry" or "uniform", default: "masonry"
# Subpages — group albums into collections at /subpage-slug/album-slug
subpages:
- name: Japan
grid: # override global grid for this subpage
columns: 4
layout: uniform
aspectRatio: "3/2"
albums:
- 33333333-3333-3333-3333-333333333333 # Tokyo
- 44444444-4444-4444-4444-444444444444 # Kyoto
- name: Wedding – Smith
password: clientpass123 # visitors must enter this to view
albums:
- 55555555-5555-5555-5555-555555555555