feat(ui,infra): SvelteKit ui scaffold, Makefile, pre-commit, claude hooks
ui/: SvelteKit 2 + Svelte 5 + Tailwind 4 + shadcn-svelte (luma, lucide) on bun with ultracite; adapter-static with SPA fallback; theme tokens taken from msos. Dockerfile gains a bun stage that builds ui/build. Makefile and pre-commit cover ruff, ty, ultracite and svelte-check; .claude settings run the matching fixer after edits. docs/PRODUCT.md captures product truth for the UI work.
This commit is contained in:
@@ -30,6 +30,14 @@ COPY . /app
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
uv sync --frozen --no-dev --extra prod
|
||||
|
||||
# ---- UI: SvelteKit SPA built with bun ----
|
||||
FROM oven/bun:1-slim AS ui
|
||||
WORKDIR /ui
|
||||
COPY ui/package.json ui/bun.lock ./
|
||||
RUN bun install --frozen-lockfile
|
||||
COPY ui ./
|
||||
RUN bun --bun svelte-kit sync && bun --bun run build
|
||||
|
||||
# ---- Runtime ----
|
||||
FROM python:3.13-slim AS runtime
|
||||
RUN apt-get update \
|
||||
@@ -59,6 +67,7 @@ RUN bun install -g --trust @anthropic-ai/claude-code \
|
||||
|
||||
COPY --from=builder /app/.venv /app/.venv
|
||||
COPY --from=builder /app /app
|
||||
COPY --from=ui /ui/build /app/ui/build
|
||||
WORKDIR /app
|
||||
|
||||
ENTRYPOINT ["python", "-m"]
|
||||
|
||||
Reference in New Issue
Block a user