Changelog
A record of features, improvements, and milestones on Cedar Creek Adventure.
Changelog
This page — a public record of features, improvements, and milestones on Cedar Creek Adventure.
Settings panel
Customise nav menu labels, homepage title and description, social links, footer text, and YouTube channel config from /admin/settings — no code changes required.
Dynamic Points of Interest (POIs)
Introduced dynamic POIs on the property tour that aggregate photos and content from multiple other source POIs, enabling comprehensive combined timeline views (like "Addi Lane All").
Journal
Public blog at /journal for documenting property work, updates, and stories. Supports Markdown, draft/publish workflow, pinned posts, and EasyMDE rich editing.
Web Share Target (Android)
Install the site as a PWA on Android and share photos directly from your camera roll or Google Photos into the admin photo library.
POI feature photos
Each point of interest can have a designated feature photo shown as a thumbnail preview on the public tour listing page.
Tag collection editor with drag-to-reorder
Dedicated tag editor at /admin/tour/tags/[name] for reordering photos and videos within a collection via drag-and-drop.
Photo library and bulk management
Central photo library at /admin/photos with multi-select bulk tagging, bulk POI linking, and filters by location, tag, year, and page usage.
Photo EXIF timestamp sorting
Tour photos now sort by full EXIF capture time rather than just date, so same-day photos appear in the order they were actually taken.
Photosphere (360°) support
Photos can be marked as equirectangular panoramas. Clicking opens an interactive 360° sphere viewer via Photo Sphere Viewer.
Complete Offline PWA Support
Leverages a custom service worker (public/sw.js) to cache the shell, static assets, and APIs. Once synced, the entire catalog, tour, and CMS pages work perfectly without an internet connection.
YouTube channel integration
Browse your YouTube channel from the admin and attach videos directly to tour POIs or photo collection tags.
SSO Authentication & API Proxy Security
Implemented Microsoft SSO integration, HTTP-only JWT sessions, login rate-limiting (10 attempts per IP per 15-minute window), and a Next.js server-side API proxy that injects API keys securely without exposing them to the client.
Property tour
Points of interest with photo timelines showing how Cedar Creek Adventure has changed over time. Each POI has a dedicated walk-order page at /tour/[slug].
CMS pages
DB-backed content pages written in Markdown, with public/private visibility. Includes the /pages listing and the About page.
Personal Plant Checklist ("My List")
Added a localStorage-backed list tool (lib/useCollection.ts / CollectionButton.tsx) enabling users to compile a personal wishlist or checklist that persists across browser sessions and operates entirely offline.
Plant taxonomy pages
Dedicated pages for each genus showing all member species, accessible at /taxa/[id].
Staged Import Changes Queue
Created the /admin/imports interface which stages daily incoming updates from the REST API. Admins can review diffs, then approve or reject changes individually or in bulk before they commit to the live database.
Custom Event Landing Page (/40)
Designed a bespoke botanical-themed event invitation page at /40 featuring custom CSS, Playfair Display typography, responsive leaf SVGs, calendar downloads, and dynamic JSON-loaded event parameters.
Taxonomic Renames & Reclassifications (Batch 2)
Completed a second reclassification batch covering 14 renames, 5 merges, and adding 11 new genera (including Bergera, Paratrophis, Brachypterum, Karrabina, Eulophia, Styphelia).
Attribute Conflicts Dashboard
Built a quality control system accessible at /admin/attributes that highlights conflicting botanical attributes (like Family, Aspect, or Soil) across different sources so clean taxonomical data can be maintained.
Taxonomic Renames & Reclassifications (Batch 1)
Completed a massive cleanup batch including Callistemon to Melaleuca reclassifications, Plectranthus to Coleus, Baumea to Machaerina, Leptospermum to Gaudium/Aggreflorum, plus 26 new genera.
iNaturalist Integration & Taxon Mapping
Mapped over 1,300 local plant species to iNaturalist taxon IDs, imported preferred common names, added clickable iNaturalist status badges, and set up a mismatch/rename candidates workflow.
Structured Botanical Names
Splits botanical names into structured database fields (genus, epithet, rank, cultivar) with an automatic DB-managed trigger that builds canonical scientific names, handles hybrids via U+00D7, and auto-records synonyms.
Browse plants by attribute
Filter plants by habitat, aspect, soil type, family, conservation status, and more via the /browse feature.
Reusable Plant Detail Shell
Implemented a smart service worker interception rule (/__sw_plant_shell__) that serves a single reusable client-side template for any plant page. This allows offline navigation to all 2,100+ plants without having to visit them online first.
Site launched on new stack
Migrated from the original PHP/MariaDB plants app to a full Next.js + FastAPI + PostgreSQL stack at cedarcreekadventure.com.