35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# Implementation Decisions (Working Defaults)
|
|
|
|
These defaults unblock implementation. Replace them when final production decisions are
|
|
made.
|
|
|
|
## Platform and Routing
|
|
|
|
- Public site target: Cloudflare Pages.
|
|
- Internal/admin target: Cloudflare Tunnel to a private origin.
|
|
- Edge policy: default deny for `/admin` in public traffic; allow only trusted network.
|
|
|
|
## Media Storage and Privacy
|
|
|
|
- Public assets must be scrubbed before publication.
|
|
- Default metadata policy: remove EXIF/IPTC/XMP from public files.
|
|
- Admin-private metadata may include location/time fields for curation workflows.
|
|
|
|
## AI Vision Layer
|
|
|
|
- Provider contract is `VisionProvider` with a common result schema.
|
|
- Default provider in local development: mock provider (no external key required).
|
|
- Fallback behavior: if provider fails, ingestion continues with manual-tagging state.
|
|
|
|
## Taxonomy and Classification
|
|
|
|
- Shared tags remain free-form for now, but collection values are fixed in
|
|
`src/types/gallery.ts`.
|
|
- Suggested tags are reviewed by user confirmation before publishing.
|
|
|
|
## Tooling and CI
|
|
|
|
- Node LTS target: 22.
|
|
- Quality gate: typecheck + lint + test + build.
|
|
- CI provider: GitHub Actions.
|