This is the public Passlock PNPM monorepo. It contains the public client libraries and sample projects. Most packages here are intended for public distribution, including publication to npm.
The sibling private repository exists at ../private.
Key packages in this repo:
packages/browser— browser/device SDKpackages/server— server-side SDKpackages/cli— developer CLIpackages/node— deprecatedexamples/sveltekit— reference example app
Root config includes files such as biome.json.
The private repo at ../private contains the Passlock cloud/backend implementation, including the REST APIs and related internal packages.
Useful private packages include:
packages/corepackages/apipackages/consolepackages/eventbuspackages/website
- You may modify files only inside this repository.
- You may read
../privatewhen necessary to verify API behaviour, endpoint names, and request/response shapes. - Do not modify, create, delete, or stage files outside this repository without permission.
- Do not copy private implementation details, secrets, credentials, or internal-only code into this public repository.
- Use
../privatefor verification, not for guessing product intent from incomplete internal implementation details.
- Treat each
packages/<name>directory as an isolated project. - Do not edit workspace-level files unless the task clearly requires it:
- root
package.json pnpm-workspace.yaml- root tooling/config files such as
tsconfig,biome, eslint/prettier equivalents
- root
- Avoid changing
pnpm-lock.yamlunless dependency changes are required. - If a root-level or lockfile change would affect other packages, stop and ask first.
- We use the PNPM workspace protocol to link packages within the monorepo.
- We use TypeScript project references.
- If a PNPM dependency is shared across multiple projects, prefer PNPM catalog entries in
pnpm-workspace.yamland use"catalog:"inpackage.json.
- Prefer running commands inside the target package directory:
cd packages/<target> && pnpm <script>
- If a task requires PNPM root execution, explain why before doing so.
- Language of choice: TypeScript
- Prefer a functional style where practical
- Wherever possible, use the Effect framework
- Prefer minimal, focused diffs
- Preserve existing formatting and conventions
- Do not invent filenames, directories, or package names
- If unsure where a change belongs, ask before writing
Common scripts include:
pnpm run buildpnpm run typecheckpnpm run clean:allpnpm run build:cleanpnpm run test:unitpnpm run test:integrationpnpm run test:allpnpm run formatpnpm run lint:fix
After making code changes, run pnpm run build or pnpm run typecheck in the affected project.