8d8b3a2ff1
- 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
25 lines
551 B
JSON
25 lines
551 B
JSON
{
|
|
"name": "slabuploader-frontend",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest"
|
|
},
|
|
"devDependencies": {
|
|
"@sveltejs/adapter-static": "^3.0.6",
|
|
"@sveltejs/kit": "^2.16.0",
|
|
"@sveltejs/vite-plugin-svelte": "^5.0.3",
|
|
"pngjs": "^7.0.0",
|
|
"svelte": "^5.0.0",
|
|
"svelte-check": "^4.1.1",
|
|
"typescript": "^5.6.3",
|
|
"vite": "^6.0.7",
|
|
"vitest": "^2.1.4"
|
|
}
|
|
}
|