Thank you for your interest in contributing! Whether you're fixing bugs, improving documentation, or proposing new features — we appreciate your efforts.
All contributors are expected to follow our Code of Conduct.
Look for issues labeled good first issue or help wanted.
Before starting work on a significant change, open an issue to discuss your proposal and wait for feedback from maintainers.
-
Fork and clone the repository:
git clone https://github.com/<your-username>/react-starter-kit.git cd react-starter-kit git remote add upstream https://github.com/kriasoft/react-starter-kit.git
-
Install dependencies:
bun install
-
Start the development server:
bun dev # Start all apps (web + api + app) # Or individually: bun web:dev # Marketing site bun app:dev # Main application bun api:dev # API server
-
Verify your setup:
bun run test --run # Run tests (Vitest) bun lint # Oxlint bun run format:check # Oxfmt bun typecheck # TypeScript
See AGENTS.md for the full monorepo layout, tech stack, and available commands.
This repository keeps a single squashed migration, so a schema change regenerates db/migrations/0000_init.sql rather than adding to it. Plain bun db:generate would append 0001_* against the existing snapshot, so:
# from db/migrations/meta/_journal.json, note the entry's `when` value,
# then set "entries" to []
rm db/migrations/0000_init.sql db/migrations/meta/0000_snapshot.json
bun db:generate --name init
# restore the original `when` so the entry keeps its identitymeta/0000_snapshot.json must keep top-level "version": "7". At "1" drizzle-kit reports data is malformed, writes nothing, and bun db:check exits non-zero — a silent no-op that is easy to miss. The journal entry's own version is not read.
This convention is specific to the starter kit. A project generated from it should follow docs/database/migrations.md and never edit an applied migration.
-
Create a feature branch from
main:git checkout main git pull upstream main git checkout -b feature/your-feature-name
-
Make focused changes — one PR per concern. Follow existing patterns in the codebase.
-
Verify before pushing:
bun run test --run && bun lint && bun run format:check && bun typecheck
-
Write clear commit messages using conventional commits:
type: description type(scope): descriptionThe scope is optional.
pr-title.ymllists the accepted types. -
Open a pull request against
mainwith a clear description. Reference related issues and include screenshots for UI changes. Give the pull request a title in the same form – CI validates that one, and it is what a squash merge records onmain.
- Maintainers will review your PR within a few days
- Address requested changes promptly
- Keep your branch up to date with
main
- Use functional components and hooks
- Prefer named exports over default exports
- Use TypeScript strict mode — avoid
anyand unnecessary type assertions - Write tests for new features (Vitest)
- Prefer explicit, readable code over clever patterns
- See
AGENTS.mdfor the full design philosophy
This project uses the Developer Certificate of Origin (DCO) version 1.1.
By contributing, you certify that you wrote the contribution yourself (or have the right to submit it) and agree to license it under the MIT License.
All commits must include a sign-off line:
git commit -s -m "feat(auth): add passkey support"Nothing in this repository checks for it – install GitHub's DCO app and make its status required if you want it enforced – so until then a maintainer may ask you to amend a commit that is missing the line.
AI tools may be used to help produce contributions. By submitting, you certify that you have reviewed and understand the code and that it does not include material you lack the right to submit under the MIT License.
The use of AI tools does not change the DCO requirements. The contributor remains the author of record and is responsible for the contribution.
- Discord — Community server
- GitHub Issues — Bug reports and feature requests
- GitHub Discussions — Questions and community discussions
By contributing, you agree that your contributions will be licensed under the MIT License.