1c0a7cb850
Phase 4 — New Widget Types: - Clock/Weather, System Stats, RSS/Feed, Calendar, Markdown, Metric/Counter, Link Group, Camera/Stream widgets - Backend services with caching for each data source - Full creation form with dynamic config fields per type Phase 5 — Visual & Styling Enhancements: - Glassmorphism card style (solid/glass/outline) - Board-level themes with per-board hue/saturation - Animated SVG status rings replacing static dots - Card size options (compact/medium/large) - Custom CSS injection (admin + per-board, sanitized) - Wallpaper backgrounds with blur/overlay/parallax Phase 6 — Functional Features: - Favorites bar with drag-and-drop reordering - Recent apps tracking with privacy toggle - Uptime dashboard page (/status, guest-accessible) - Notifications system (Discord/Slack/Telegram/HTTP webhooks) - App tags with filtering in board view - Multi-URL app cards with expandable sub-links - Personal API tokens with scoped permissions - Audit log with retention and admin viewer Phase 7 — Quality of Life: - Onboarding wizard (5-step first-launch setup) - App URL health preview with favicon/title detection - Board templates (4 built-in + custom import/export) - Keyboard shortcut overlay (j/k nav, 1-9 boards, ? help) 212 files changed, 15641 insertions, 980 deletions. Build, lint, type check, and 222 tests all pass.
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).