3.0 KiB
Post-alpha backlog (Seaside Sanctuary)
This document tracks work described in your local PRDs (under PRDs/, not committed) that is out of scope for the static alpha. It is not a commitment order; prioritize by risk and value.
Phase B - Secure media ingestion
Source: typical PRD themes (secure ingestion pipeline).
- Server-side upload endpoint (e.g. Nitro/Node) with temporary buffer storage.
- Extract GPS,
DateTimeOriginal, camera make/model usingsharp/exif-reader(or equivalent). - Persist rich metadata in a private database; store only scrubbed images in public object storage (Cloudflare Images / R2).
- Re-encode or strip metadata so public files have no EXIF/IPTC/XMP (validate with external tools).
- Admin “Privacy Summary” UI after upload; optional “keep metadata” override (default off).
- Async/worker processing for bulk uploads so the admin UI stays responsive.
- Automated collection tagging from GPS polygons (e.g. Encinitas / garden / beachhouse regions).
Acceptance targets: Public downloads show no location metadata; admin shows exact stored time/location from DB.
Phase C - Pluggable AI vision and tagging
Source: typical PRD themes (AI vision layer).
VisionProviderinterface withanalyzeImage(buffer)(or similar).- Implementations: e.g. Google Gemini Vision, OpenAI multimodal, Ollama (local), optional niche classifiers (BirdNET, etc.).
- Config UI: provider selection, API keys / base URLs, tunable system prompt; persist settings (e.g. Pinia + server-side secrets for production).
- After scrubbing, run analysis on the clean buffer; map results to the shared taxonomy schema (
Common Name,Scientific Name, confidence, suggested tags). - Confirmation step with chips (Meyer Lemon Gold for high confidence, softer styling for low).
- Graceful fallback to manual tagging when a provider is unreachable.
- Optional batch queue for many files.
Acceptance targets: Hot-swap providers without restart; consistent DB schema; resilient errors.
Phase D - Operations and routing
Source: typical PRD themes (routing / ops).
- Public origin: Cloudflare Pages or Vercel for the gallery (current alpha is static-ready).
- Internal origin: Home lab via Cloudflare Tunnel (Proxmox/Docker) for admin/automation.
- Edge routing: Worker or WAF rules using
CF-Connecting-IP- e.g. home IP →admin.*or internal tunnel; everyone else → public gallery only. - TLS hostnames, secrets, and rate limits for upload endpoints.
Phase E - Asset pipeline at scale
- Cloudflare Images (or R2 + Workers) for variants: WebP/AVIF, responsive widths, blur placeholders generated at the edge or build time.
- Optional BlurHash generation in ingestion for smaller manifest payloads.
When Phase B exists, replace or generate the gallery manifest (src/data/gallery.defaults.json, or your gitignored src/data/gallery.json override) from the database or export job; the GalleryAsset shape in src/types/gallery.ts is the contract to preserve.