Each repository owns its toolchain. Do not force every project onto one package manager or runtime merely for consistency.

Toolchain map

RepositoryRequired baselineMain local command
wildhq-siteNode.js 22.12 or newer and pnpmpnpm exec astro dev --background
packbase-react-uipnpm 11.17 for the lockfile, Bun for current scripts, and a development Clerk publishable key for the full appbun run dev
packbase, apps/serverNode.js 24–26, pnpm 11.4, and PostgreSQL for a live server; the current server image pins Node.js 24.18.0pnpm --dir apps/server dev

Deno 2.9.4 remains a requirement for other tools and packages in the Packbase server monorepo. It is not the API runtime. FFmpeg is additionally required when exercising video processing.

Wild HQ site

From the site checkout:

pnpm install --frozen-lockfile
pnpm exec astro dev --background

Use pnpm exec astro dev status, pnpm exec astro dev logs, and pnpm exec astro dev stop to manage the background server.

Before handing off a site change:

pnpm check
pnpm build
git diff --check

Handbook pages live under src/content/handbook/pages; instincts live under src/content/instincts. Do not edit generated dist output.

Packbase web

The repository uses pnpm >11. You can immediately start the web client:

pnpm install --frozen-lockfile
cp .env.example .env.local
pnpm run dev

Put a development VITE_CLERK_PUBLISHABLE_KEY in .env.local. Do not commit it. For isolated component work, Storybook is the primary surface:

pnpm run storybook

The browser SDK defaults to https://api.packbase.app. Before exercising a mutation, sign-in flow, upload, moderation action, or destructive control from a local build, hold Shift while opening the sign-in dialog, open Advanced options, and set the API URL to the isolated server you intend to use, normally http://localhost:8000.

The browser’s saved API URL and the Cloudflare Worker’s PACKBASE_API_URL binding are separate settings. Changing one does not change the other.

Packbase server without a live environment

Many server tasks can begin without .env, PostgreSQL, Clerk, S3, or Bluesky credentials:

corepack enable
pnpm install --frozen-lockfile
pnpm --dir apps/server routes:check
pnpm --dir apps/server routes:list
pnpm --dir apps/server check-types
pnpm --dir apps/server test

Route inspection deliberately constructs but does not connect Prisma. Unit tests are run through Node’s test runner and tsx.

Do not use deno run dev; the current server README mentions it as a launcher, but the repository has no matching Deno configuration or task. Use the declared pnpm command above.

Packbase server with a local database

Clerk and S3-compatible storage credentials are additional requirements for the feature paths that use authentication, uploads, and assets. Use development services and values you are authorised to use; never copy production or another volunteer’s .env.

Once a task provides a prepared disposable database and the required development integrations, start the process with pnpm --dir apps/server dev. Record the first failing subsystem rather than guessing missing values or repeatedly mutating the database.

Connect the local web and server

  1. Start the server on its default port, 8000.
  2. Start the web client on Vite’s default port, 5173.
  3. Set the web client’s Advanced API URL to http://localhost:8000.
  4. Use Clerk development credentials that belong to the same development application on both sides.
  5. Confirm the visible account and data are disposable before a mutation.

The server’s admin-origin default includes http://localhost:5173, but that does not make a production API safe for local experimentation.

Establish the baseline

Before editing any repository:

git status --short

Run the smallest relevant non-mutating checks and note failures already present. Preserve unrelated changed files. Do not format the whole repository to make a focused task look clean, and do not claim a check passed when it was skipped for missing services or tooling.