scaffold: SvelteKit adapter-node + TypeScript + ESLint #9
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "6-scaffold-sveltekit-adapter-node"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Initialize the
westside-adminSvelteKit project skeleton:adapter-nodeSSR (required for Drizzle server queries), strict TypeScript, ESLint flat config, Prettier, placeholder home + layout, and a/healthroute for the upcoming Dockerfile HEALTHCHECK.Closes #6
Trace
admin-row-crudsveltekit-ssrproject-westside-adminChanges
package.json-- adapter-node, kit/svelte/svelte-check/vite pinned to match westside-app; new deps (typescript, eslint, prettier, adapter-node) at latest stable.svelte.config.js--@sveltejs/adapter-nodewithout: 'build'.vite.config.ts-- standardsveltekit()plugin.tsconfig.json-- strict mode, extends.svelte-kit/tsconfig.json, matches westside-contracts conventions.eslint.config.js-- ESLint 9 flat config (js + ts + svelte + prettier)..prettierrc,.prettierignore-- tabs, single quotes, no trailing commas, 100 cols..gitignore-- node_modules, build, .svelte-kit, .env, .DS_Store.src/app.html,src/app.d.ts,src/app.css-- minimal shell with CSS vars (no Tailwind perfeedback_no_tailwind).src/routes/+layout.svelte-- header with brand placeholder.src/routes/+page.svelte-- placeholder home naming the app + roadmap.src/routes/health/+server.ts--GET /healthreturns200 {"status":"ok"}for #7's HEALTHCHECK and k8s probes.src/lib/server/.gitkeep-- reserves the server-only dir for #1 (db.ts) and #2 (hooks.server.ts).static/.gitkeepREADME.md-- stack, dev/build commands, roadmap pointing at #1-#8.Out of Scope (deferred)
Per ticket: NO Drizzle (#1), NO Keycloak
hooks.server.ts(#2), NO tenant helper (#3), NO players routes (#4/#5), NO Dockerfile (#7), NO.woodpecker.yaml(#8).Test Plan
npm installclean (198 packages, 0 warnings)npm run check-- 141 files, 0 errors, 0 warningsnpm run build-- emitsbuild/index.jsvia@sveltejs/adapter-nodenode build/index.js-- prod server listens (PORT=3001 in test)GET /-> HTTP 200GET /health-> HTTP 200, body{"status":"ok"}prettier --write .cleaneslint .cleanReview Checklist
{issue-number}-{kebab-case}--6-scaffold-sveltekit-adapter-nodefeedback_no_tailwind)tsconfig.json/healthroute returns 200 (Dockerfile #7 dependency)src/lib/server/reserved for #1 + #2Related Notes
project-westside-admin-- project root in pal-e-docsstory-westside-admin-admin-row-crud-- user storyarch-deployment-westside-admin-- deployment architecturearch-dataflow-westside-admin-- dataflow (justifies SSR over static)feedback_no_tailwind-- pure CSS vars conventionforgejo_admin/westside-admin#1,#2,#3,#4,#5,#7,#8Discovered Scope
None. Scope tight; followups already ticketed (#1, #2, #3, #4, #5, #7, #8).
PR #9 Review — Scaffold SvelteKit adapter-node
DOMAIN REVIEW (SvelteKit / TypeScript)
Stack identified: SvelteKit 2 + Svelte 5 (runes) + TypeScript strict + adapter-node + ESLint flat config + Prettier. Pure CSS vars (no Tailwind, no PostCSS).
Versions cross-checked against
~/westside-app/package.jsonreference:Code quality:
svelte.config.js— clean,out: 'build'set sonpm start->node build/index.jsworks as documented.src/routes/health/+server.ts— usesjson()helper, returns exact contract200 {"status":"ok"}per ticket. JSDoc cites the consumer (#7 HEALTHCHECK + k8s probes). Good.src/routes/+layout.svelteuses Svelte 5 runes ($props(),{@render children()}) — modern.src/app.cssdefines spacing + color tokens via CSS vars — sets the no-Tailwind precedent for follow-up tickets.tsconfig.jsonstrict + bundler resolution.eslint.config.jsflat config with TS + svelte + prettier — current best practice.BLOCKERS
None.
NITS
#c8102eis inline inapp.css. Fine for scaffold; consider atokens.cssonce the design language solidifies (push to plan Epilogue perfeedback_nits_to_epilogue)..gitignorewhitelists.env.examplebut no.env.exampleis committed yet. Will land naturally with #1 (Drizzle) whenDATABASE_URLshows up — call out in #1 ticket so it isn't missed.src/app.d.tshas allApp.*interfaces commented out — expected for scaffold;Localswill be uncommented in #2 (Keycloak auth). No action needed.SOP COMPLIANCE
6-scaffold-sveltekit-adapter-node(matches{issue}-{kebab-purpose})Closes #6story:admin-row-crudarch:sveltekit-ssrnpm install,npm run check,npm run build, runtime probe of/and/health, prettier + eslint clean).env, no credentials committedhooks.server.ts, noroutes/players, no Dockerfile, no.woodpecker.yaml— those correctly defer to #1/#2/#7/#8feedback_no_tailwind)PROCESS OBSERVATIONS
feedback_smaller_scopes_parallelandfeedback_three_thing_limitshape.feedback_validate_before_doneat the dev-agent layer (CI/runtime validation will come with #8 + post-merge).package-lock.jsonis committed (correct), so #7's Dockerfile must usenpm ci, notnpm install. Flag in #7 if not already.VERDICT: APPROVED