- Node.js (see .nvmrc for the recommended version)
First, install the dependencies and run the development server:
npm install
npm run devOpen http://localhost:3000 with your browser to see the result.
npm 11.16+ gates dependency lifecycle scripts (preinstall / install / postinstall) behind the allowScripts field in package.json: npm 11 warns about unapproved scripts but still runs them, npm 12 skips them. The packages listed there are approved by name (any version), which matches how the project has always installed. cypress needs its script to download the Cypress binary; the @sentry/cli script is a fallback that only does work when its prebuilt platform package is missing; browser-tabs-lock only prints a message. Run npm install-scripts prune to drop entries for packages that have left the dependency tree. Any new dependency with an install script is still flagged (npm 11 warns, npm 12 skips it and the install may break); review it with npm install-scripts ls and, if it is legitimate, add it with npm install-scripts approve <pkg> --no-allow-scripts-pin.
Copy the example environment file and adjust the values as needed:
cp .env.example .envSee docs/environment.md for more details.
- Check architecture and coding conventions: docs/README.md
- AI-assisted development (Claude Code, Codex, Cursor): start at AGENTS.md; local review skill
/pubky-code-review(.agents/skills/pubky-code-review/SKILL.md) - Follow commit message format: docs/commit-message.md
- Cut a production release: docs/release.md
- Cut a production hotfix: docs/hotfix.md
This project is licensed under the MIT License.
See the LICENSE file for more details.