Scaffold SvelteKit adapter-node + TypeScript + ESLint #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Type
Task
Lineage
First foundational ticket for westside-admin. No parent issue. Blocks:
forgejo_admin/westside-admin#1(Drizzle),#2(Auth),#3(Tenant helper),#4(Players list),#5(Players edit),#7(Dockerfile),#8(Woodpecker).Repo
forgejo_admin/westside-adminUser Story
story-westside-admin-admin-row-crud. Foundational scaffolding — the app cannot exist without the SvelteKit project structure.Context
westside-admin is a new SvelteKit
adapter-nodeapp that will use Drizzle ORM to provide admin CRUD over the basketball-api Postgres DB, gated by Keycloak admin role. This ticket creates the empty SvelteKit project skeleton — no auth, no Drizzle, no routes beyond a placeholder home page. Subsequent tickets layer those in.adapter-nodeis required (NOTadapter-static) because Drizzle queries run server-side via+page.server.tsandhooks.server.ts. Seearch-deployment-westside-adminandarch-dataflow-westside-admin.Reference repo caveat: westside-app is
adapter-static+ plain JavaScript + no ESLint config. It is NOT a transferable scaffold reference. Use the SvelteKit official adapter-node + TypeScript scaffold (npm create svelte@latestwith TypeScript + ESLint + Prettier). If westside-contracts exists and is adapter-node, prefer that as the reference for repo conventions.Scope
Initialize the SvelteKit project skeleton as the foundation for all subsequent feature tickets. Run
npm create svelte@latest(or pnpm equivalent) selecting: TypeScript syntax, ESLint, Prettier, no test framework yet. Then install@sveltejs/adapter-nodeand configuresvelte.config.jsto use it.Files created:
package.json(with kit, svelte, vite, typescript, eslint, prettier deps),svelte.config.js(using @sveltejs/adapter-node),vite.config.ts, stricttsconfig.json,.eslintrc.cjs+.prettierrc,.gitignore(node_modules, build, .env, .DS_Store), minimalsrc/app.html, placeholdersrc/routes/+layout.sveltewith nav placeholder, placeholdersrc/routes/+page.sveltedisplaying "westside-admin" plus a/healthroute atsrc/routes/health/+server.tsthat returns 200 (Dockerfile ticket #7 needs this),.gitkeepinsrc/lib/server/to reserve the server-only directory, and aREADME.mdpointing toproject-westside-adminin pal-e-docs.Do NOT create in this ticket:
src/lib/server/db.ts(covered by #1),hooks.server.ts(covered by #2),Dockerfile(#7),.woodpecker.yaml(#8).Pin versions for kit/svelte/svelte-check/vite to whatever westside-app uses (those packages are the same in adapter-static and adapter-node). Leave new deps (typescript, eslint, prettier, adapter-node) at latest stable. No Tailwind per
feedback_no_tailwind.Acceptance Criteria
npm install(or pnpm install) runs clean with no warningsnpm run check(svelte-check) passesnpm run buildproduces abuild/directory withindex.jsnpm run devstarts dev server on port 5173 and serves the placeholdernode build/index.jsstarts production server on port 3000GET /healthreturns HTTP 200 (so Dockerfile HEALTHCHECK in #7 works)Test Expectations
node build/index.jsresponds 200 to GET / and GET /healthConstraints
feedback_no_tailwindChecklist
npm run check+npm run buildgreen/healthroute confirmed returning 200Related
project-westside-adminstory-westside-admin-admin-row-crudarch-deployment-westside-adminScope Review: NEEDS_REFINEMENT
Review note:
review-1087-2026-04-25Ticket body and scope are solid — Task template complete, AC verifiable, no decomposition needed, no upstream blockers (foundational ticket). One label fix and one minor body tightening keep it from being READY.
[LABEL]arch:sveltekit-serverdoes not match any arch note. Project page lists onlyarch-domain-westside-admin,arch-dataflow-westside-admin,arch-deployment-westside-admin. Suggestarch:deployment-westside-admin(the issue's Related section already links there).[BODY](minor) Narrow "Match package versions to westside-app" — westside-app uses adapter-static, no TS, no ESLint, jsconfig (not tsconfig). Only@sveltejs/kit,svelte,svelte-check,viteversions are actually applicable.[SCOPE](board-wide, not this ticket) 10 other items use component-style arch labels (arch:scopeddb-helper,arch:keycloak,arch:hooks-server,arch:page-server,arch:postgres-grants,arch:woodpecker-ci,arch:deployment) with no backing notes. Project-level convention call for Ava.Scope Review: READY
Review note:
review-1087-2026-04-25-v2(supersedesreview-1087-2026-04-25NEEDS_REFINEMENT)All v1 blockers resolved:
arch:sveltekit-ssr(canonical perconvention-architecture-ids)/healthroute added to scope + AC + Test Expectations (unblocks Dockerfile #7)Ready to advance backlog → todo.
PR opened: #9
Scaffold complete. All ACs verified locally:
npm installcleannpm run check-- 0 errors / 0 warningsnpm run build-- emitsbuild/index.jsnode build/index.js--GET /200,GET /health200{"status":"ok"}prettier+eslintcleanBranch:
6-scaffold-sveltekit-adapter-node