Overview

ProBeya is open source and welcomes contributions from the community. Whether you are fixing a typo, adding a feature, improving documentation, or translating the interface, your help is valued.

Ways to Contribute

Development Workflow

1

Fork the Repository

Fork probeya/probeya on GitHub and clone your fork locally.

git clone https://github.com/YOUR_USERNAME/obeya.git
cd obeya
2

Create a Branch

Create a branch from main with a descriptive name: bash git checkout -b feat/add-gantt-dependencies # or git checkout -b fix/board-view-drag-drop

3

Set Up Local Environment

Follow the Local Setup guide to get your development environment running.

4

Make Your Changes

Write your code, tests, and documentation. Follow the coding standards described below.

5

Test

Run the full test suite to ensure nothing is broken: bash pnpm test pnpm lint pnpm type-check

6

Commit

Write clear commit messages following the Conventional Commits format: bash git commit -m "feat(timeline): add dependency arrows between items" git commit -m "fix(board): prevent card flicker on drag-and-drop" git commit -m "docs(api): add webhook payload examples"

7

Push and Open PR

Push your branch and open a pull request on GitHub:

git push origin feat/add-gantt-dependencies

Fill in the PR template with a description of your changes, screenshots (if UI), and any related issues.

Coding Standards

TypeScript

  • Use strict TypeScript — no any types except where absolutely necessary
  • Prefer const and functional patterns
  • Use Zod schemas for all external data validation
  • Export types alongside implementations

React

  • Use functional components with hooks
  • Prefer server components where possible (Next.js App Router)
  • Use Radix UI primitives for accessible components
  • Style with Tailwind CSS utility classes

Database

  • Define schema changes in Drizzle ORM format
  • Write idempotent migrations
  • Add indexes for frequently queried columns
  • Always include organizationId in queries for tenant isolation

Testing

  • Write unit tests for business logic (Vitest)
  • Write integration tests for tRPC procedures
  • Write E2E tests for critical user flows (Playwright)
  • Aim for 80%+ code coverage on new code

Commit Message Format

<type>(<scope>): <description>

[optional body]

[optional footer]
TypeDescription
featNew feature
fixBug fix
docsDocumentation only
styleFormatting, missing semicolons, etc.
refactorCode change that neither fixes a bug nor adds a feature
perfPerformance improvement
testAdding or updating tests
choreBuild process, dependencies, or tooling changes

Pull Request Guidelines

  • Keep PRs focused and reasonably sized (under 500 lines of changes)
  • Include screenshots or recordings for UI changes
  • Link related issues using Fixes #123 or Closes #456
  • Ensure CI passes (tests, lint, typecheck, build)
  • Request review from at least one maintainer
  • Be responsive to review feedback

Translations

ProBeya supports thirteen languages. Translation files are in packages/i18n/messages/:

packages/i18n/messages/
├── en.json    # English (base)
├── fr.json    # French
├── es.json    # Spanish
├── de.json    # German
├── ar.json    # Arabic
└── ja.json    # Japanese

To add or update translations:

  1. Edit the language file with the new/updated strings
  2. Ensure all keys present in en.json exist in your language file
  3. Submit a PR with the changes

If you want to add support for a new language, open a GitHub Discussion first to coordinate the effort.

Code of Conduct

All contributors are expected to follow our Code of Conduct. Be respectful, inclusive, and constructive in all interactions.

License

ProBeya is licensed under the AGPLv3 license. By contributing, you agree that your contributions will be licensed under the same license.