feat(m1-1): scaffold SvelteKit + Dockerfile + TDD test harness

- SvelteKit (JS, adapter-node) home page + /api/health route
- frontend/Dockerfile multi-stage build->serve (slabuploader-m1:local, 349MB)
- Test harness: Vitest unit + Playwright e2e; smoke tests RED->GREEN verified
- Build, image build, and image serve all verified
This commit is contained in:
Ty
2026-09-13 22:55:34 -07:00
parent ba8e5f72f6
commit 93666320ef
15 changed files with 2610 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
<script>
import '../app.css';
</script>
<svelte:head>
<title>SlabUploader — Milestone 1</title>
</svelte:head>
<main>
<h1>SlabUploader</h1>
<p>Milestone 1 — Capture (browser-only)</p>
<slot />
</main>
+12
View File
@@ -0,0 +1,12 @@
<script>
/** M1 placeholder home — the 5-state capture flow is built in later cards. */
</script>
<div class="capture">
<h2>Capture</h2>
<p>The M1 capture flow (Add photo → Mask → Length axis → Measure → PNG) lands in cards M1-3…M1-5.</p>
</div>
<style>
.capture { max-width: 720px; margin: 2rem auto; padding: 0 1rem; }
</style>
@@ -0,0 +1,6 @@
// Minimal health route so the UAT container has a non-SPA probe target.
import { json } from '@sveltejs/kit';
export function GET() {
return json({ ok: true, milestone: 1, app: 'slab-uploader' });
}