Personal site built with SvelteKit, deployed to Cloudflare Workers. The Projects and Skills pages pull live data from the GitHub GraphQL API (pinned repos, language footprint, contribution activity) with KV caching.
- Framework: SvelteKit 2 + Svelte 5 (runes)
- Build: Vite 8 (Rolldown bundler)
- Styling: Tailwind CSS 4 via
@tailwindcss/vite - Linting: ESLint 9 (flat config) +
eslint-plugin-svelte - Formatting: oxfmt
- Tests: Vitest
- Deploy:
@sveltejs/adapter-cloudflare
Install dependencies with pnpm install, then start a dev server:
pnpm dev
# or start the server and open the app in a new browser tab
pnpm dev --openThe GitHub-backed pages need a token to fetch live data. Provide a
GITHUB_API_KEY with read:user/public_repo scope via the environment
(the rest of the GitHub config lives in .env):
GITHUB_API_KEY="<token>" pnpm dev| Command | Description |
|---|---|
pnpm dev |
Start the dev server |
pnpm build |
Type-check and build for production |
pnpm preview |
Preview the production build |
pnpm check |
Run svelte-check |
pnpm lint |
Check formatting (oxfmt) and lint (ESLint) |
pnpm format |
Format the codebase with oxfmt |
pnpm test |
Run the Vitest suite |
pnpm upgrade |
Update dependencies via npm-check-updates |
pnpm buildPreview the production build with pnpm preview.