Quick Start
Fork and Clone
Fork the repository and create a new branch with a descriptive name:
Use prefixes like
feat/, fix/, docs/, chore/ for branch names.Make Changes
Make your changes following the code standards below.Add tests if applicable and ensure existing tests pass.
Run Quality Checks
Before committing, run these checks to ensure code quality:
Pre-commit hooks will automatically run these checks, but it’s good practice to run them manually first.
Commit Changes
Code Standards
Project Structure
ZeroStarter uses a monorepo architecture organized with Turborepo:Code Style
TypeScript
TypeScript
- Always use TypeScript for type safety
- Avoid
anytypes - use proper typing - Export types and interfaces for reusability
- Use type inference where possible
Imports
Imports
- Use
@/alias for imports within a workspace - Use package names for cross-workspace imports
- Group imports logically (external, internal, types)
Comments
Comments
- Only comment when absolutely necessary
- Code should be self-documenting through clear naming
- Use comments for complex logic or non-obvious decisions
Formatting
Formatting
Formatting is handled automatically by Oxfmt:
- Run
bun run formatto format all files - Run
bun run format:checkto check formatting without changes - Pre-commit hooks automatically format staged files
Development Workflow
Available Scripts
Commonly used scripts frompackage.json:
Development Scripts
Development Scripts
Database Scripts
Database Scripts
Pre-commit Hooks
ZeroStarter uses Lefthook for Git hooks. Pre-commit hooks automatically:-
Audit dependencies (on
canarybranch only) -
Run lint-staged to format and lint changed files
- Formats with Oxfmt
- Lints with Oxlint
- Manages dependencies in package.json
-
Build the project to ensure no build errors
Commit Conventions
We use Conventional Commits enforced by commitlint:feat
New feature for the user
fix
Bug fix for the user
docs
Documentation changes
chore
Maintenance tasks
refactor
Code refactoring
test
Adding or updating tests
perf
Performance improvements
ci
CI/CD changes
Commit Message Format
Commit Message Format
Pull Request Guidelines
Before Opening a PR
Ensure Quality
- All checks pass (
build,check-types,format,lint) - Code follows project conventions
- Commits follow conventional commit format
- No merge conflicts with target branch
Write Clear Description
Include in your PR description:
- What: Brief summary of changes
- Why: Motivation and context
- How: Implementation approach (if complex)
- Migration notes: Any breaking changes or migration steps
- Related issues: Link to issues being addressed
PR Template Example
Large Changes
For breaking changes or large features, please open an issue first to discuss the approach before investing significant time in implementation.
Testing
While ZeroStarter doesn’t currently have a comprehensive test suite, we encourage:- Manual testing of your changes
- Testing edge cases and error scenarios
- Verifying type safety with
bun run check-types - Testing in both development and production builds
Release Process
ZeroStarter uses an automated release workflow:Version Bump
The changelog PR includes:
- Updated
CHANGELOG.md - Version bump in
package.json - Contributor attribution
Contributors don’t need to worry about versioning - it’s handled automatically by the CI/CD pipeline.
Getting Help
GitHub Issues
Report bugs or request features
Discussions
Ask questions and share ideas
Documentation
Browse the full documentation
Twitter/X
Follow @nrjdalal for updates
Code of Conduct
By contributing to ZeroStarter, you agree to:- Be respectful and inclusive in all interactions
- Provide constructive feedback
- Focus on what’s best for the community
- Accept maintainer decisions gracefully
License
By contributing to ZeroStarter, you agree that your contributions will be licensed under the MIT License.Thank you for contributing to ZeroStarter! Your efforts help make this project better for everyone.