docs: README positive locks (drop don't-ladders; SoT is main)
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
# SlabUploader
|
# SlabUploader
|
||||||
|
|
||||||
Phone app for listing one-of-a-one wood slabs on the Whidbey Wood Store.
|
Browser app for listing one-of-a-kind wood slabs on the Whidbey Wood Store.
|
||||||
|
|
||||||
You photograph a slab, confirm the cut and the numbers on the phone, review the listing, and create the WooCommerce product. The phone does the measuring and crop. The server stores the draft, talks to the store, and (later) runs vision.
|
You photograph a slab, confirm the cut and the numbers, review the listing, and create the WooCommerce product. The browser does the measuring and crop. The server stores the draft, talks to the store, and (later) runs vision. Runs on phones and PCs.
|
||||||
|
|
||||||
Owner: Ty (Whidbey). Store: www.whidbeywoodstore.com. Runs in Docker Compose behind Caddy on a host you inventory first (`APP_HOSTNAME`).
|
Owner: Ty (Whidbey). Store: www.whidbeywoodstore.com. Runs in Docker Compose behind Caddy on a host you inventory first (`APP_HOSTNAME`).
|
||||||
|
|
||||||
## Where we are
|
## Where we are
|
||||||
|
|
||||||
Docs freeze signed 2026-08-31. The current docs branch is `docs/refactor-v2`. Read `AGENTS.md` before writing code. If an old PRD line fights TECH-SPEC, ARCHITECTURE, or AGENTS, ignore the PRD. The old PRD is in `docs/archive/`.
|
Gate A freeze signed 2026-08-31. All live docs sit on `main`. Read `AGENTS.md` before writing code.
|
||||||
|
|
||||||
The bar for this first version: a real slab, photographed on a phone, listed on the real store. Practice listings are WooCommerce **drafts** with SKUs that start `SLAB-UAT-`. After Ty looks, one real SKU goes **live**. Online only for now. Offline capture waits.
|
The bar for this first version: a real slab, photographed on a phone or a PC, listed on the real store. Practice listings are WooCommerce **drafts** with SKUs that start `SLAB-UAT-`. After Ty reviews, one real SKU goes **live**. Online only for now; offline capture is deferred.
|
||||||
|
|
||||||
Build order is in `docs/IMPL-PLAN.md`. Empty app on the real host first, then the first draft listing, then vision.
|
Build order is in `docs/IMPL-PLAN.md`. Empty app on the real host first, then the first draft listing, then vision.
|
||||||
|
|
||||||
@@ -19,27 +19,29 @@ Build order is in `docs/IMPL-PLAN.md`. Empty app on the real host first, then th
|
|||||||
| File | What |
|
| File | What |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `AGENTS.md` | Hard rules. Read first. |
|
| `AGENTS.md` | Hard rules. Read first. |
|
||||||
| `docs/ARCHITECTURE.md` | What runs on the phone vs the server |
|
| `docs/ARCHITECTURE.md` | Hybrid topology, what runs where, secrets, status machine |
|
||||||
| `docs/TECH-SPEC-PIPELINE.md` | Math, image pipeline, test vectors |
|
| `docs/TECH-SPEC-PIPELINE.md` | Math, image pipeline, constants, test vectors TV-1–TV-10 |
|
||||||
| `docs/DATA-MODEL.md` | SQLite tables and slab statuses |
|
| `docs/DATA-MODEL.md` | SQLite tables, slab statuses, settings |
|
||||||
| `docs/OPENAPI.md` | Phone to server API |
|
| `docs/OPENAPI.md` | Browser to server API |
|
||||||
| `docs/CONTENT-WOO.md` | Titles, descriptions, store payload |
|
| `docs/CONTENT-WOO.md` | Titles, descriptions, WooCommerce payload |
|
||||||
| `docs/PROMPTS.md` | Vision and copy prompts (server files) |
|
| `docs/PROMPTS.md` | Call 1 / Call 2 prompt files (server text files) |
|
||||||
| `docs/DEPLOYMENT.md` | Compose, Caddy, backup |
|
| `docs/DEPLOYMENT.md` | Compose, Caddy, secrets placement, ops |
|
||||||
| `docs/UAT-PRACTICE.md` | Walkable practice UAT: host check → App Password → one `SLAB-UAT-*` prove |
|
| `docs/UX.md` | Presentation: what the mill owner sees and does |
|
||||||
| `deploy/INVENTORY.md` | Host worksheet before you bind ports |
|
| `docs/UAT-PRACTICE.md` | Walkable practice UAT for `SLAB-UAT-*` |
|
||||||
| `docs/IMPL-PLAN.md` | Phases and exit gates |
|
| `docs/IMPL-PLAN.md` | Phases 0–6, exit gates, deferred stub (Phase 2) |
|
||||||
| `docs/archive/PRD-2026-08.txt` | Frozen history. Not a source for new work. |
|
| `deploy/INVENTORY.md` | Host worksheet before binding ports |
|
||||||
|
| `docs/archive/PRD-2026-08.txt` | Frozen history, not a source for new work |
|
||||||
|
|
||||||
## Short map
|
## Short map
|
||||||
|
|
||||||
- Phone: mask knobs, square feet, board feet, 3:4 PNG. Server: store, WooCommerce, vision proxy. Server matting ("Try harder") is not in this first listing.
|
- Client (SvelteKit) owns the happy path: mask knobs, sqft, bdft, 3:4 PNG. Server (FastAPI) stores drafts, talks to WooCommerce, and proxies vision. Server matting ("Try harder") is deferred from POC; POC mask tuning is client-side only.
|
||||||
- Board feet = square feet × thickness in inches. No divide-by-12. Test vectors TV-1 through TV-10 run on the phone.
|
- Board feet = square feet × thickness in inches. No divide-by-12. Test vectors TV-1 through TV-10 run in the browser.
|
||||||
- Secrets never sit in the browser. Encrypted on the server. Store login is a WordPress application password on a low-privilege user, not WooCommerce consumer keys.
|
- Secrets never sit in the browser. Encrypted on the server. Store login is a WordPress application password on a low-privilege user; WooCommerce consumer keys are not implemented.
|
||||||
- Practice SKUs `SLAB-UAT-*` are always drafts, even if Settings say publish.
|
- Practice SKUs `SLAB-UAT-*` are always drafts, even if Settings say publish.
|
||||||
- Vision stays off until the first draft listing works. Species suggestion and Generate text come after that, still in this project.
|
- Vision stays off until the first draft listing works. Species suggestion and Generate text come after, still inside this project.
|
||||||
- Two containers (`frontend`, `fastapi`) plus Caddy. One SQLite, image volumes.
|
- Two containers (`frontend`, `fastapi`) plus Caddy. One SQLite, image volumes. Inventory the host first.
|
||||||
- Not in v1: versioning, staff roles, bulk publish, analytics, editing an existing SKU.
|
|
||||||
|
Where deferred items live: `docs/ARCHITECTURE.md` §4 and `docs/IMPL-PLAN.md` Phase 2 (offline PWA, OCR, ruler — deferred stub).
|
||||||
|
|
||||||
## Repo
|
## Repo
|
||||||
|
|
||||||
@@ -49,6 +51,6 @@ Source of truth: Gitea `Ty_Tech/SlabUploader` on gitea-atd
|
|||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
1. Read `AGENTS.md` and Phase 0 in `docs/IMPL-PLAN.md`.
|
1. Read `AGENTS.md` and Phase 0 in `docs/IMPL-PLAN.md`.
|
||||||
2. Build the phone math modules and a thin FastAPI health/settings app. Do not put measuring on the server.
|
2. Build the client math modules and a thin FastAPI health/settings app. Measuring lives in the browser.
|
||||||
3. Ty signs each phase. Do not skip that.
|
3. Ty signs each phase.
|
||||||
4. Do not implement from `docs/archive/PRD-2026-08.txt`.
|
4. Live docs on `main` are the source of truth. The archive PRD is frozen history only.
|
||||||
|
|||||||
Reference in New Issue
Block a user