Files
beachho.us/README.md
T
matt bc02d72576
CI / quality (push) Has been cancelled
New initial commit
2026-04-22 16:28:11 -07:00

3.2 KiB

beacho.us (Seaside Sanctuary)

Vue 3 + Vite gallery for coastal, garden, and wildlife photography. The current app is an alpha focused on public gallery browsing, while private admin ingestion and AI tagging are scaffolded for iterative hardening.

Requirements

  • Node 22 (see .nvmrc)
  • npm 10+

Quick Start

nvm use
npm install
npm run dev

Local customization (optional)

Some files are gitignored so you can personalize without committing secrets or your real gallery.

You want Do this
Your own gallery manifest npm run init:custom (or copy src/data/gallery.defaults.json → src/data/gallery.json)
Private implementation notes Same command creates docs/IMPLEMENTATION_DECISIONS.md from docs/IMPLEMENTATION_DECISIONS.example.md
Other private docs docs/_private/ (contents gitignored) or any docs/**/*.local.md
Product requirements PRDs/*.md except PRD.template.md / README.md — copy template to e.g. PRDs/PRD.md
Large / private images Put them under public/gallery/user/ (ignored except .gitkeep) and reference /gallery/user/... in your manifest

Tracked templates: src/data/gallery.defaults.json, docs/IMPLEMENTATION_DECISIONS.example.md, .env.example. See docs/README.md for gitignored doc patterns.

Scripts

  • npm run dev - start local dev server
  • npm run typecheck - run Vue TypeScript checks
  • npm run lint - run ESLint
  • npm run lint:fix - auto-fix lint findings
  • npm run format - format with Prettier
  • npm run format:check - verify formatting
  • npm run test - run unit tests
  • npm run test:watch - watch mode tests
  • npm run test:coverage - coverage report
  • npm run build - typecheck and production build
  • npm run check - full quality gate (typecheck, lint, test, build)
  • npm run init:custom - create gitignored local files from templates (gallery, decisions doc, starter PRDs/PRD.md)

Architecture

  • Public gallery UI: src/views/GalleryView.vue, src/components/*
  • Gallery state and lightbox behavior: src/stores/gallery.ts
  • Data source adapter boundary: src/data/source.ts
  • Default static data source: src/data/staticGallerySource.ts
  • Admin workflow scaffold: src/views/AdminWorkbenchView.vue
  • Admin domain logic:
    • Privacy scrub and metadata extraction: src/features/admin/ingestion.ts
    • Vision provider abstraction: src/features/admin/vision.ts
    • Admin settings and upload queue: src/stores/admin.ts

Current Scope

  • Implemented:
    • Gallery filters, lazy pagination, lightbox navigation
    • Admin workbench scaffold with upload review queue and AI suggestion preview
    • Pluggable vision provider interface with resilient fallback to manual tagging
  • Not yet production-complete:
    • Backend upload endpoint and persistent DB
    • Cloudflare/Vercel deployment wiring
    • Server-side secrets and auth/session enforcement

Deployment Direction

BACKLOG.md still tracks high-level post-alpha themes. Detailed PRDs live only on your machine: copy PRDs/PRD.template.md to a new file under PRDs/ (see PRDs/README.md), or use npm run init:custom. For local implementation notes, use docs/IMPLEMENTATION_DECISIONS.example.md → docs/IMPLEMENTATION_DECISIONS.md.