1.9 KiB
1.9 KiB
benjaminpalko.ca
Personal website and blog for Benjamin Palko, built with SvelteKit and deployed on Netlify.
Stack
- SvelteKit 5 / Svelte 5
- TypeScript (strict)
- Tailwind CSS 4 + daisyUI
- mdsvex markdown for blog posts
- pino (server-side logging)
@lucide/svelteicons
Prerequisites
- mise (or Node + the pnpm version pinned in
mise.toml)
Setup
pnpm install
Development
pnpm dev # start dev server
pnpm dev --open # start dev server and open the app in a browser
Scripts
| Command | What it does |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Production build |
pnpm preview |
Preview the production build |
pnpm check |
svelte-kit sync + svelte-check (typecheck) |
pnpm lint |
Prettier check + ESLint |
pnpm format |
Prettier write |
pnpm test:unit |
Vitest (watch mode) |
pnpm test |
Vitest (single run) |
Blog
Posts live at src/lib/posts/*.md as mdsvex markdown. Follow src/lib/posts/template.md.sample for frontmatter (title, description, image, date, categories, published). Categories are one of development, work, life. The slug is the filename; only posts with published: true appear on the site.
See AGENTS.md for the full authoring workflow.
Deployment
Netlify deploys the main branch automatically. The GitHub Actions PR gate (.github/workflows/pr.yml) runs lint, typecheck, tests, and build on every pull request using pnpm. Before shipping, verify locally with:
pnpm lint && pnpm check && pnpm test && pnpm build