Thanks for your interest in contributing! This guide explains how to set up your environment, propose changes, and submit high‑quality pull requests.
- Requirements:
- Node.js 20+
- pnpm 10+
- Install:
pnpm install
- Build, Test, Lint, Format:
pnpm buildpnpm -r testpnpm lintpnpm format
analyzer— Drizzle schema analysiscli— drzl CLIgenerator-*— code generators (oRPC, service, zod, valibot, arktype)template-*— oRPC templatesvalidation-core— shared validation codegen helpers
- Create a feature branch from
master:git checkout -b feature/short-descorbugfix/issue-###
- Implement changes scoped to a single topic.
- Run tests and lint locally (see commands above).
- Update docs/readmes if behavior or APIs change.
- Open a PR with a clear title and description.
Use Conventional Commits for readable history and changelog automation:
feat(scope): add new capabilityfix(scope): resolve bugdocs(scope): update READMErefactor(scope): code change with no behavior changetest(scope): add/adjust testschore(scope): tooling, build, deps
Examples:
feat(orpc): inject .output() for arktypefix(cli): apply analyzer defaults when omitted
feature/<short-desc>bugfix/<short-desc>chore/<short-desc>
- Changes are focused and documented
- Tests added or updated
-
pnpm -r testpasses locally -
pnpm lintpasses (no new warnings/errors) - README/CHANGELOG updated where appropriate
- Prefer unit‑level tests near the code under test.
- Use temporary directories for any filesystem output and clean up after tests.
- Keep tests independent and deterministic.
- TypeScript strict mode is enabled; keep types precise and narrow.
- Prefer small, composable functions and clear names.
- Follow existing patterns in the package you are editing.
- The project uses SemVer for published packages.
- Maintainers handle releases; contributors don’t need to publish.
- If your change warrants a minor/major bump, call it out in the PR description.
- Use descriptive titles and steps to reproduce (when applicable).
- For feature proposals, outline the problem, the proposed solution, and alternatives considered.
- Issues tagged
sponsor-wantedinclude a scoped brief, and desired outcome. If you’d like to fund one, comment or DM @omardulaimidev on X (https://x.com/omardulaimidev) so we can reserve it for you. - Issues tagged
priorityare high-impact items the maintainers plan to tackle next—sponsorship accelerates them. - Funded work always lands in this repo under Apache‑2.0 (no private forks or exclusivity).
Be respectful and inclusive. By participating, you agree to uphold a welcoming environment for everyone. If you encounter unacceptable behavior, please open an issue or contact the maintainers.