Thanks for your interest in contributing to PulseKit! This guide will help you get started.
-
Fork and clone the repository:
git clone https://github.com/<your-username>/pulsekit.git cd pulsekit
-
Install dependencies (requires pnpm v9+):
pnpm install
-
Build all packages:
pnpm build
-
Start watch mode for development:
pnpm dev
packages/
core/ → @pulsekit/core (queries, types, SQL migrations)
next/ → @pulsekit/next (Next.js handlers + client tracker)
react/ → @pulsekit/react (dashboard components)
create-pulsekit → create-pulsekit (CLI scaffolding tool)
examples/
next-supabase-demo/ (working example app)
Packages depend on each other: core → next → react. Turborepo handles the build order automatically.
-
Create a feature branch from
main:git checkout -b feat/my-feature
-
Make your changes. If you're modifying a package, run
pnpm buildto verify everything compiles. -
If you're adding or changing SQL migrations, add a new file in
packages/core/sql/following the existing naming convention (NNN_description.sql). -
Commit your changes with a descriptive message:
git commit -m "feat: add support for custom events"We follow Conventional Commits loosely:
feat:— new featurefix:— bug fixdocs:— documentation onlychore:— maintenance, deps, tooling
-
Push your branch and open a pull request against
main.
- Keep PRs focused — one feature or fix per PR.
- Include a clear description of what changed and why.
- If your change affects the public API of any package, note it in the PR description.
- Make sure
pnpm buildpasses before submitting.
Open an issue using the Bug Report template. Include:
- Steps to reproduce
- Expected vs actual behavior
- Your environment (Node version, OS, Next.js version)
Open an issue using the Feature Request template. Describe the use case and why it would be useful.
- TypeScript strict mode is enabled — avoid
anytypes. - Follow the existing patterns in each package.
- Keep dependencies minimal — don't add a library for something that can be done in a few lines.
By contributing, you agree that your contributions will be licensed under the MIT License.