Development
Prerequisites
Section titled “Prerequisites”- Node.js (see
frontend/package.jsonfor the tested range) - Docker or Podman (for the backend / E2E tests)
Commands
Section titled “Commands”# Frontend (SolidJS + Vite)cd frontendnpm installnpm run dev # http://localhost:3000
# E2E tests (Playwright, requires a PocketBase container)npm run test:e2e # full build + e2enpm run test:e2e:fast # just e2e (assumes build is current)
# Unit tests for frontend utilsnpm test
# PocketBase integration testscd ../pocketbasenpm testConnect to a remote PocketBase
Section titled “Connect to a remote PocketBase”Point the frontend at an existing backend without running PocketBase locally:
VITE_PB_URL=https://pb.example.com npm run dev:remoteOr persist it in a git-ignored frontend/.env.local:
echo 'VITE_PB_URL=https://pb.example.com' > frontend/.env.localnpm run dev:remoteProject structure
Section titled “Project structure”.├── frontend/ # v3 SolidJS frontend + Playwright e2e├── pocketbase/ # PocketBase backend + vitest integration tests│ ├── pb_hooks/ # JS hooks loaded by PB at startup│ └── tests/ # Vitest integration tests├── scripts/ # Helm/kind test rig + CI helpers├── helm/stjorna/ # Helm chart├── site/ # This documentation site (Astro + Starlight)└── docker-compose.ymlContributing to this site
Section titled “Contributing to this site”cd sitenpm installnpm run dev # http://localhost:4321npm run build # outputs site/dist/Documentation pages are Markdown files under site/src/content/docs/docs/. The landing page is
site/src/pages/index.astro.
Gotchas
Section titled “Gotchas”- Vite proxy must use
/api/(with trailing slash), not/api— otherwise the/api-docsroute gets hijacked. - Slugs must match
^[a-z0-9]+(?:-[a-z0-9]+)*$; generate them withutils/slug.ts.
