commit
bc02d72576
64 files changed
+9366
No files matched your search
@@ -0,0 +1,77 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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`.
|
||||
Reference in new issue
Block a user