benjaminpalko/README.md
2026-08-11 15:34:48 -04:00

56 lines
1.9 KiB
Markdown

# 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/svelte` icons
## Prerequisites
- [mise](https://mise.jdx.dev) (or Node + the pnpm version pinned in `mise.toml`)
## Setup
```bash
pnpm install
```
## Development
```bash
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:
```bash
pnpm lint && pnpm check && pnpm test && pnpm build
```