The Northern projects / daniel.camera

daniel.camera

A personal photoblog backed by Flickr — one photo at a time, with themes, RSS, and PWA install.
active

A single-page photoblog that pulls photos from Flickr, shows them one per day with a queue system, and optionally cross-posts to Nostr. Pure static SPA — one HTML file with all CSS and JS inlined, no build step, no framework — served from Cloudflare Pages, with Pages Functions as the backend and Cloudflare KV for cache + admin state.

Each new photo is signed server-side and broadcast to a configurable Nostr relay set. Replies, reactions, and zap totals are pulled live from the relays on view. A daily queue picks one photo per calendar day — upload ten at once, and the extras wait their turn so readers never get a bulk drop.

Live from daniel.camera
Photos
Albums
Places
Recent photos
Features

Photo of the day queue

Upload a burst to Flickr; the queue releases one per calendar day. Admin can pin, reorder, or force-live any photo on any date.

Related photos

Each photo gets a cross-referenced set based on shared albums, tag overlap, and date proximity — rebuilt incrementally.

Live Nostr engagement

Replies, reactions, and zap totals fetched from configurable relays on view. All aggregated across every cross-posted photo and note.

Locations tree

Geotagged photos organized into a country → state → place tree via reverse-geocoded woeids. Incrementally built — 40 lookups per run.

Cameras view

EXIF aggregation grouped by camera body and lens. Pulls one photo's EXIF at a time, respecting Flickr rate limits.

Albums & collections

Full Flickr photoset tree with cover photos. Only albums whose date_update changed re-fetch — 35 per background run.

Microposts

Short-form notes with [photo:id] shortcode expansion. Published to the same RSS feed and auto-cross-posted as kind-1 Nostr events.

Engagement report

Admin-only batched analysis across every Nostr-posted item — per-hour and per-day breakdowns with a recommended optimal post time.

Image matcher

Perceptual-hash tool in admin that finds unlinked Nostr events matching a Flickr photo, so older posts can be retroactively linked.

Web Push

VAPID-signed push notifications when a new photo drops. Subscribers opt in from the settings drawer — no email required.

Privacy-first analytics

Self-hosted page-view beacon — path + external referrer hostname + viewport width only. No cookies, no fingerprinting, no PII.

Self-hostable backup

Drop Flickr entirely: migrate to R2 for images, D1 for metadata, Nominatim for geocoding. Migration plan lives in the repo.

Stack

HTML + inline CSS/JS frontend · Cloudflare Pages Functions (Workers runtime) backend · Cloudflare KV for cache + config · @noble/curves for Nostr signing · VAPID Web Push · Flickr API · 0 recurring cost on Cloudflare's free tier.

Cloudflare Pages Workers KV Flickr Nostr PWA RSS Web Push