Interactive solar-system art project + developer portfolio website built with SvelteKit, TypeScript, TailwindCSS, Prisma, and SQLite.
- Fullscreen canvas animation with deltaTime-driven orbital motion
- Central sun glow, orbit rings, and persistent planets
- Deterministic orbit assignment (
20planets per ring, fixed slot spacing) - Liquid Glass design system:
- reusable glass panel
- glow utilities
- gradient atmospheric background
- reusable portfolio card
- Floating glass navbar with smooth transitions
- Portfolio routes:
/about,/projects,/contact - API endpoints:
GET /api/planetsPOST /api/planets
- Prisma + SQLite persistence
- SvelteKit + TypeScript
- TailwindCSS (
@tailwindcss/vite) - Prisma ORM + SQLite
- Canvas 2D (isolated animation engine, not driven by Svelte reactive frame loops)
npm install
cp .env.example .env
npm run db:generate
npm run devOpen http://localhost:5173.
- Prisma client is generated from
prisma/schema.prisma. DATABASE_URLdefaults tofile:./dev.db.- The app auto-bootstraps the
Planettable at runtime (safeCREATE TABLE IF NOT EXISTS) before API reads/writes.
Create a planet:
curl -X POST http://localhost:5173/api/planets \
-H "content-type: application/json" \
-d '{"name":"Europa","color":"#7dd3fc","size":3.2,"speed":0.24}'Read all planets:
curl http://localhost:5173/api/planetsnpm run lint
npm run check
npm run build