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

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