Thank you for your interest in contributing to OneProject! This guide will help you get started with contributing to our monorepo.
- Node.js 18+ (use
corepack enablefor pnpm version management) - Git
- Clone the repository
- Install dependencies:
pnpm install - Build all packages:
pnpm build
We use a feature branch workflow based on the dev branch:
- Bug fixes:
bug/descriptive-name(e.g.,bug/fix-login-validation) - Features:
feature/descriptive-name(e.g.,feature/user-dashboard)
- Check current branch:
git branch - Create a new branch from
dev:git checkout dev git pull origin dev git checkout -b feature/your-feature-name
- Make your changes following the architecture patterns
- Test your changes thoroughly
- Run quality checks:
pnpm w:app lint # Type checking pnpm format # Code formatting
- Commit your changes with descriptive messages
- Push and create a pull request
- Use descriptive commit messages that explain the "what" but use PRs to explain the "why"
- Keep commits focused and atomic
- Follow conventional commit format when possible
This is a Turborepo monorepo using pnpm workspaces:
apps/app: Main Next.js 15 frontendapps/api: tRPC API server
@op/ui: React Aria Components library@op/core: Core utilities and configuration@op/hooks: Reusable React hooks@op/common: Shared business logic
@op/db: Drizzle ORM schema and migrations@op/api: tRPC routers and procedures@op/supabase: Supabase client configuration@op/emails: React Email templates@op/cache: Caching utilities
- Follow existing code conventions in the file you're editing
- Use TypeScript strictly (no
anytypes) - Write "self-documenting" code with clear variable names
- Only use colors present in the tailwind.shared config
- Use React Aria Components for accessibility
- Import components like:
import { Button } from "@op/ui/Button" - Follow the component patterns in
@op/ui
After making schema changes:
- Run
pnpm w:db generate - Run
pnpm w:db migrate
- Test your changes thoroughly before submitting
- Follow existing testing patterns in the codebase
- Ensure all existing tests pass
Use these shortcuts for common operations:
pnpm w:app # Work with apps/app
pnpm w:api # Work with apps/api
pnpm w:db # Work with services/db
pnpm w:ui # Work with packages/ui (usually Storybook)
pnpm w:emails # Work with services/emails- Add dependencies:
pnpm add <package> --filter <workspace-name> - Clean unused deps:
pnpm deps:clean - Enforce version consistency:
pnpm deps:override
- Ensure your branch is up to date with
dev - Run all quality checks locally
- Create a pull request with a clear description
- Link any related issues
- Wait for review and address feedback
- Check existing issues for similar problems
- Review the codebase for examples
- Ask questions in pull request discussions
Please be respectful and constructive in all interactions.