Overview

Obeya Cloud 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

Bug Reports

Found a bug? Open an issue on GitHub with reproduction steps.

Feature Requests

Have an idea? Open a discussion on GitHub to propose new features.

Code

Submit pull requests for bug fixes, features, or improvements.

Documentation

Improve docs, fix typos, or write guides for new features.

Translations

Help translate Obeya Cloud into more languages.

Community

Help answer questions on Discord and GitHub Discussions.

Development Workflow

1

Fork the Repository

Fork obeya-cloud/obeya on GitHub and clone your fork locally.
git clone https://github.com/YOUR_USERNAME/obeya-cloud.git
cd obeya-cloud
2

Create a Branch

Create a branch from main with a descriptive name:
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:
pnpm test
pnpm lint
pnpm typecheck
6

Commit

Write clear commit messages following the Conventional Commits format:
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

Obeya Cloud supports six 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

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