cf6bde238c
Initialize SvelteKit project with Svelte 5, TypeScript strict, Tailwind CSS v4, shadcn-svelte, Prisma + SQLite, Vitest, ESLint, Prettier. Add Docker multi-stage build, docker-compose, and Gitea Actions CI pipeline.
3.8 KiB
3.8 KiB
Phase 1: Project Scaffolding & Tooling
Status: ✅ Complete Parent plan: PLAN.md Domain: backend
Objective
Initialize the SvelteKit project with the full toolchain: TypeScript strict, Svelte 5, Tailwind CSS v4, shadcn-svelte, Prisma + SQLite, Vitest, ESLint, Prettier. Create the Docker and CI configuration.
Tasks
- Task 1: Initialize SvelteKit project with TypeScript, Svelte 5 adapter-node
- Task 2: Install and configure Tailwind CSS v4
- Task 3: Install and configure shadcn-svelte (Bits UI primitives)
- Task 4: Install Prisma, configure SQLite provider, create initial empty schema
- Task 5: Install Vitest and configure for SvelteKit
- Task 6: Configure ESLint + Prettier for Svelte/TS
- Task 7: Install runtime dependencies: lucide-svelte, simple-icons, superforms, zod, bcryptjs, jsonwebtoken, node-cron
- Task 8: Create
.env.examplewith all required env vars - Task 9: Create
Dockerfile(multi-stage build) - Task 10: Create
docker-compose.yml - Task 11: Create
.gitea/workflows/ci.yml(lint, type-check, test, Docker build) - Task 12: Create
app.csswith Tailwind base + CSS custom properties for theming - Task 13: Create
app.d.tswith SvelteKit type augmentation (Locals, Session)
Files to Modify/Create
package.json— project config with all dependencies and scriptssvelte.config.js— SvelteKit config with adapter-nodevite.config.ts— Vite config with Vitesttsconfig.json— TypeScript strict configtailwind.config.ts— Tailwind v4 configsrc/app.css— Tailwind imports + theme variablessrc/app.d.ts— SvelteKit type augmentationsrc/app.html— HTML templateprisma/schema.prisma— empty schema with SQLite datasource.env.example— template env varsDockerfile— multi-stage Node builddocker-compose.yml— single-service deployment.gitea/workflows/ci.yml— CI pipelineeslint.config.js— ESLint flat config.prettierrc— Prettier config
Acceptance Criteria
npm installsucceeds- Project structure matches SvelteKit conventions
- All config files are valid
- Dockerfile builds (structure-wise, not the app itself yet)
Notes
- Use
@sveltejs/adapter-nodefor Docker deployment - Svelte 5 runes mode is the default in latest SvelteKit — no special config needed
- Tailwind v4 uses the new CSS-based config approach
- ⚠️ Big Bang: build will not pass yet — no routes or components exist
Review Checklist
- All tasks completed
- Code follows project conventions
- No unintended side effects
- Build passes
- Tests pass (new + existing)
Handoff to Next Phase
Phase 1 scaffolding is complete. All tooling is configured and npm install succeeds.
What's ready for Phase 2:
- Prisma is installed with SQLite datasource configured at
prisma/schema.prisma— add models there. @prisma/clientis a devDependency; runnpx prisma generateafter adding models.DATABASE_URLdefaults tofile:../data/launcher.db(see.env.example).- SvelteKit project structure is in place:
src/routes/+page.svelte,src/app.html,src/app.css,src/app.d.ts. App.Localstype augmentation definesuserandsession— align with the User model in Phase 2.- shadcn-svelte is configured via
components.json— add UI components withnpx shadcn-svelte@latest add <component>. src/lib/utils/cn.tsprovides thecn()class-merge utility used by shadcn-svelte components.
Known gaps (expected for Big Bang strategy):
npm run buildwill fail until SvelteKit routes and server hooks are wired up.npm run checkwill fail until.svelte-kit/is generated viasvelte-kit sync.- No tests exist yet —
npm testwill pass vacuously (no test files).