# Phase 1: Project Scaffolding & Tooling **Status:** ⬜ Not Started **Parent plan:** [PLAN.md](./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, bcrypt, jsonwebtoken, node-cron, openid-client - [ ] Task 8: Create `.env.example` with 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.css` with Tailwind base + CSS custom properties for theming - [ ] Task 13: Create `app.d.ts` with SvelteKit type augmentation (Locals, Session) ## Files to Modify/Create - `package.json` — project config with all dependencies and scripts - `svelte.config.js` — SvelteKit config with adapter-node - `vite.config.ts` — Vite config with Vitest - `tsconfig.json` — TypeScript strict config - `tailwind.config.ts` — Tailwind v4 config - `src/app.css` — Tailwind imports + theme variables - `src/app.d.ts` — SvelteKit type augmentation - `src/app.html` — HTML template - `prisma/schema.prisma` — empty schema with SQLite datasource - `.env.example` — template env vars - `Dockerfile` — multi-stage Node build - `docker-compose.yml` — single-service deployment - `.gitea/workflows/ci.yml` — CI pipeline - `eslint.config.js` — ESLint flat config - `.prettierrc` — Prettier config ## Acceptance Criteria - `npm install` succeeds - Project structure matches SvelteKit conventions - All config files are valid - Dockerfile builds (structure-wise, not the app itself yet) ## Notes - Use `@sveltejs/adapter-node` for 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