Gate B: SvelteKit capture→mask→numbers→review UI with deterministic pipeline

- Scaffold SvelteKit app (svelte.config.js, vite.config.ts, app.html, app.d.ts)
- Build full capture flow: photo input → mask overlay + 4 knobs → axis overlay
  + rotation → length/thickness/SKU inputs → review + upload to /api/v1/slabs
- Uses existing lib/pipeline/* pure modules (mask, axis, units, crop, pricing, types)
- Uses existing validation/sku.ts for SKU validation
- Svelte 5 runes ($state, $effect, $derived) for reactive state
- Canvas-based rendering for mask overlay, axis visualization, and 3:4 crop preview
- Dockerfile updated for Vite production build with static Node server on :80
- All 54 existing tests pass, build succeeds
This commit is contained in:
grokbot_ty
2026-09-07 18:53:35 +00:00
parent f82287db78
commit 8d8b3a2ff1
12 changed files with 2938 additions and 171 deletions
+9 -3
View File
@@ -5,9 +5,15 @@
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"skipLibCheck": true,
"types": ["vitest/globals"],
"lib": ["ES2022"]
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"paths": {
"$lib/*": ["src/lib/*"],
"$app/*": [".svelte-kit/types/$app/*"],
"$types": [".svelte-kit/types/*"]
},
"baseUrl": "."
},
"include": ["src/**/*.ts"]
"include": ["src/**/*.ts", "src/**/*.svelte"],
"exclude": ["node_modules"]
}