Commit Graph

12 Commits

Author SHA1 Message Date
puttaalu 856439f3fd Paginate the gallery grid with 60 photos per page
Emit /page/N/ pages alongside index.html and render a pager at the
bottom of each page. Ships as a plain link that navigates without JS,
and an IntersectionObserver enhancement that fetches the next page and
appends tiles for an infinite-scroll feel.
2026-07-02 22:20:28 +02:00
puttaalu 613906cd0c Colour the profile name and handle with Gruvbox green and blue 2026-07-02 11:38:56 +02:00
puttaalu 51b082ccf4 Make profile identity, bio and fonts configurable
The profile header, photo page byline and copyright footer previously
hardcoded the author name, handle, bio, and font choices. Move all of
these to CLI flags on the binary and matching options on the NixOS
module so the same build can serve any single-user gallery.

New surface, all with defaults matching the previous hardcoded values:
  --author       / services.photogallery.author
  --handle       / services.photogallery.handle
  --bio          / services.photogallery.bio
  --bio-alt      / services.photogallery.bioAlt   ("" to omit)
  --fonts-url    / services.photogallery.fontsURL
  --serif-family / services.photogallery.serifFamily
  --ml-family    / services.photogallery.mlFamily

Templates read the two font families from a small inline <style> that
overrides the :root variables, so the stylesheet stays fully static and
the font URL is loaded via the configured stylesheet link.

README updated to describe the new options, the medium/full-size photo
detail flow, and the EXIF-based date prefill on the upload page.
2026-07-02 02:30:35 +02:00
puttaalu ec42a65c5b Add copyright footer to gallery and photo pages
Renders a © 2000–<current-year> Ashik Salahudeen line under both the
index and each photo page. The year comes from time.Now().Year() at
render time so the range stays current without manual updates.
2026-07-02 02:18:32 +02:00
puttaalu b26bef0296 Allow reselecting the upload photo and prefill date from EXIF
Once a file was picked the preview <img> overlaid the file input and
blocked further clicks, so the drop zone became read-only. Making the
preview and the new 'Click to change' hint pointer-events:none lets
clicks pass through to the input again.

Also parses the JPEG APP1 EXIF segment inline (no dependency) to read
DateTimeOriginal and prefill the date field. Falls back to the file's
lastModified for PNGs or JPEGs without EXIF. The date field stays
editable in either case.
2026-07-02 02:09:54 +02:00
puttaalu fcedf7e06a Switch English serif from Vollkorn to Crimson Pro
Vollkorn read as too chunky next to the Malayalam bio in Manjari.
Crimson Pro is a calmer book-face serif that pairs more evenly.

Renames the CSS variable from --vk to --serif to reflect that the
value is no longer Vollkorn-specific, and bumps .ml to 17px/1.5
so the Malayalam subtitle sits at a comfortable reading size.
2026-07-02 02:02:12 +02:00
puttaalu cd19795e9e Break line before Malayalam bio subtitle 2026-07-02 01:56:58 +02:00
puttaalu d269c8b1b4 Aspect-preserved detail image with full-size download
Photo detail page previously showed a square crop of the source image. Now
generate an aspect-preserved medium JPEG (longest side 1600, quality 88)
and display that on the detail page instead. The original file is linked
from a click-through on the image and from a sidebar 'Full size' download
link.

Also skip regeneration of images/thumbs/medium when the destination is
already at least as new as the source, so a rebuild triggered by editing
one sidecar (or restarting the service) no longer redecodes and rescales
every photo.
2026-07-02 01:53:23 +02:00
puttaalu 7f7a51ceb5 Raise nginx upload size limit to 20M
Default client_max_body_size of 1M caused 413s on typical photo uploads.
2026-07-02 01:39:51 +02:00
puttaalu c51539cbb4 fix: change username 2026-07-02 01:26:06 +02:00
puttaalu 3a8a7ab429 Add MIT license 2026-07-02 00:57:49 +02:00
puttaalu fd2828f1e7 Initial commit 2026-07-02 00:53:17 +02:00