Personal Website
Find a file
2026-08-11 17:25:01 -04:00
.forgejo/workflows freeze lockfile 2026-08-11 17:08:23 -04:00
.opencode update eslint and prettier 2026-08-11 17:12:52 -04:00
src lol 2026-08-11 17:21:25 -04:00
static update profile pic 2026-06-16 13:12:24 -04:00
.editorconfig editorconfig 2025-06-26 22:12:18 -04:00
.gitignore mobile-friendly (#2) 2025-05-01 13:33:06 -04:00
.npmrc init 2025-01-19 12:46:43 -05:00
.prettierignore strapi (#3) 2025-05-03 23:35:06 -04:00
.prettierrc fix prettier config ordering 2026-08-11 16:25:02 -04:00
AGENTS.md freeze lockfile 2026-08-11 17:08:23 -04:00
eslint.config.js eslint ignore .opencode 2026-08-11 16:34:12 -04:00
mise.toml switch to pnpm 2026-08-11 14:58:11 -04:00
netlify.toml set up new workflow and migrate to .forgejo dir 2026-08-11 15:57:25 -04:00
package.json remove humanspeak 2026-08-11 17:25:01 -04:00
pnpm-lock.yaml remove humanspeak 2026-08-11 17:25:01 -04:00
pnpm-workspace.yaml switch to pnpm 2026-08-11 14:58:11 -04:00
postcss.config.js fix shit 2025-04-30 17:00:03 -04:00
README.md set up new workflow and migrate to .forgejo dir 2026-08-11 15:57:25 -04:00
skills-lock.json format project 2026-08-11 16:25:07 -04:00
svelte.config.js remove console log 2026-01-27 10:03:31 -05:00
tailwind.config.ts fix shit 2025-04-30 17:00:03 -04:00
tsconfig.json init 2025-01-19 12:46:43 -05:00
vite.config.ts fix shit 2025-04-30 17:00:03 -04:00

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 (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

The site deploys to Netlify on every push to main via a Forgejo Actions workflow (.forgejo/workflows/deploy.yml): it installs with pnpm, runs pnpm build, and deploys the build/ directory with netlify-cli. Requires NETLIFY_AUTH_TOKEN and NETLIFY_SITE_ID configured as repository secrets in Forgejo. Netlify's GitHub-app continuous deployment is disabled.

The GitHub Actions PR gate (.github/workflows/pr.yml) runs on the GitHub mirror on every pull request using pnpm. Before shipping, verify locally with:

pnpm lint && pnpm check && pnpm test && pnpm build