4d9f3070a76715b2be4240b889e7a61036d2ad05
Restore CONTENT-WOO, add PROMPTS.md, and align PRD/architecture/API with inference decisions: prompt files on disk, 0.7 confidence gate, species constrained to Woo leaves, Call 2 prose-only + templates, feat-* tags, and inference_enabled gating.
SlabUploader
Mobile-first, self-hosted app for publishing one-of-a-one wood slabs to WooCommerce. Field capture (offline) → deterministic measurement/pricing/normalization → publish a single slab to the store as a pending product.
Owner: Ty (Whidbey). Store: www.whidbeywoodstore.com. Deploy: .201 (Caddy, Docker).
Status
Planning complete — ready for implementation. All 20 product decisions locked
(PRD "Decisions log", 2026-08-24). Build plan in docs/IMPL-PLAN.md (phases 0–6).
Documentation
| File | What |
|---|---|
Slab capture app PRD.txt |
Requirements + locked decisions (source of truth for "what") |
docs/ARCHITECTURE.md |
Services, client/server split, offline PWA, data flow |
docs/TECH-SPEC-PIPELINE.md |
Deterministic math + image pipeline, constants, 9 test vectors |
docs/DATA-MODEL.md |
SQLite schema + status state machine |
docs/OPENAPI.md |
Client↔server API contract (deliverable #2) |
docs/CONTENT-WOO.md |
Content templates + WooCommerce payload/integration |
docs/PROMPTS.md |
Call 1 vision prompt + Call 2 content prompt (server files) |
docs/DEPLOYMENT.md |
Compose, Caddy, backup/restore, key rotation (deliverable #4) |
docs/IMPL-PLAN.md |
Phased build plan with acceptance criteria + exit gates |
AGENTS.md |
Working contract + hard rules for anyone implementing |
Quick orientation
- Deterministic core (measurements, pricing, normalization, Woo sync) is pure, network-free, and unit-tested. Inference (species/character + optional content) is the only scoped-LLM surface, and it's toggleable — the app fully works without it.
- Offline-first PWA: capture works with no network; drafts + photos persist in IndexedDB and sync when online.
- Two containers (
frontend,fastapi) + Caddy. Single SQLite + image volumes. - v1 non-goals: no versioning, no staff/roles, no bulk publish, no analytics, no update path (create-only, SKU-deduped).
Repo remotes
- Canonical:
github.com/TyTech99/SlabUploader - Mirror: Gitea
TyTech_Internal/SlabUploader(truenas.local:30008)
Getting started (implementer)
- Read
AGENTS.md(hard rules) anddocs/IMPL-PLAN.md(phases). - Start at Phase 0 — scaffold + the tested deterministic pipeline.
- Don't skip the exit gates; Ty signs each phase.
Languages
TypeScript
43.5%
Python
37%
Svelte
18.8%
Shell
0.4%
Dockerfile
0.2%