Monorepo for the bread recipes app (SolidJS, Python REST, OpenAPI, Pact).
This repository is designed to be used with Cursor (the VS Code–based editor with integrated AI).
Shared editor settings live under .vscode/, and Cursor-specific rules live under .cursor/.
You can work in other editors, but Cursor is the intended environment.
The REST API is defined in packages/openapi/openapi.yaml (shared by the Python API and the front end). From the repository root, pnpm lint runs Redocly on that spec (via @solid-pact/openapi) together with the other workspace lint tasks.
The CI workflow (.github/workflows/ci.yml) runs pnpm lint, pnpm test, pnpm openapi:generate, and pnpm openapi:validate (among the other setup steps) on pushes to main and on every pull request.
When you add or upgrade Node dependencies, run pnpm install with the pnpm version pinned in packageManager (via Corepack). Using a different pnpm release can rewrite pnpm-lock.yaml in an incompatible way (for example changing the lockfile format).
Use nvm so your runtime matches CI. The repo pins Node 24.14.0 in both .nvmrc and the root package.json engines.node field.
From the repository root:
nvm installIf your shell does not switch versions automatically after nvm install, run nvm use so node -v prints v24.14.0.
With engine-strict=true in .npmrc, pnpm will not run unless the active Node version satisfies engines.node.
Use pnpm only. The root package.json declares:
packageManager:pnpm@10.18.1engines.pnpm:>=10.18.1engines.npm: a non-semver reminder (please-use-pnpm) so mistakennpm installattempts are visibly wrong
package-manager-strict in .npmrc enforces the declared package manager.
pnpm installInstall pnpm via Corepack if needed:
corepack enable && corepack prepare pnpm@10.18.1 --activateSee pnpm installation for other options.
All root package.json scripts delegate to Turborepo, which runs the matching script in each workspace (e.g. apps/web, apps/api). Run them from the repository root with pnpm only:
pnpm build
pnpm dev
pnpm lint
pnpm test
pnpm openapi:generate
pnpm openapi:validateTo run a script in a single workspace, use pnpm’s filter (examples):
pnpm --filter web build
pnpm --filter api testOr use Turborepo’s filter directly:
pnpm turbo build --filter=web