Thanks for your interest in contributing!
pnpm install
pnpm build
pnpm typecheck
pnpm lint
pnpm test:coverageUse pnpm build:codegen only when you need to regenerate checked-in Convex _generated files and
have access to the selected Convex project.
Tests use convex-test with the @edge-runtime/vm environment:
pnpm test # single run
pnpm test:watch # watch mode
pnpm test:coverage # enforced 100% on covered filesCoverage is gated at 100% (vitest.config.mts). Every public method needs a happy-path test and
at least one adversarial test (auth-denied, invalid input, boundary).
- Prettier + ESLint (run
pnpm lintbefore submitting) @vllnt/eslint-config/convexenforces: namespace separation, snake_case filenames, no barev.any(), require returns validators, no N+1 queries- No
any— useunknown+ type guards - Explicit return types on public APIs
- Mutations in
mutations.ts, queries inqueries.ts, validators invalidators.ts
- Target
main - One logical change per PR
- Include tests for new behavior or bug fixes
- Ensure all checks pass:
pnpm typecheck && pnpm lint && pnpm test:coverage && pnpm build
Maintainers only:
- Preferred: run
.github/workflows/publish.ymlviaworkflow_dispatchfor patch/minor/major. - Local fallback:
pnpm release(patch) /pnpm alpha(prerelease).
Use GitHub Issues. For security vulnerabilities, see SECURITY.md.