Skip to main content
If you plan to contribute to Documenso, please take a moment to feel awesome. People like you are what open source is about. Any contributions, no matter how big or small, are highly appreciated.

Before Getting Started

Before jumping into a PR, take these steps to ensure a smooth contribution process:
1

Search existing PRs and issues

Search existing PRs or issues for an open or closed item that relates to your submission.
2

Select or create an issue

Select an issue from the issue tracker or create a new one to discuss your proposed changes.
3

Consider the discussion

Review the discussion on the issue to understand the context and requirements.
4

Accept the CLA

Accept the Contributor License Agreement to ensure we can accept your contributions.
The CLA grants Documenso a perpetual, worldwide, non-exclusive, royalty-free license to use your contributions while you retain all rights to your work.

Taking Issues

Before taking an issue, ensure that:
  • The issue has been assigned the public label
  • The issue is clearly defined and understood
  • No one has been assigned to the issue
  • No one has expressed intention to work on it
You can then:
  1. Comment on the issue with your intention to work on it
  2. Begin work on the issue
Always feel free to ask questions or seek clarification on the issue. If you need help getting started, join us on Discord.

Development Setup

The development branch is main. All pull requests should be made against this branch.
1

Fork the repository

Fork the Documenso repository to your own GitHub account.
2

Clone your fork

Clone your fork to your local device.
git clone https://github.com/YOUR_USERNAME/documenso.git
cd documenso
3

Create a branch

Create a new branch with a descriptive name (include the issue ID):
git checkout -b feat/doc-999-somefeature-that-rocks
4

Set up your environment

Follow the Developer Setup guide for detailed setup instructions.

Branch Naming Convention

Use descriptive branch names with the following format:
<type>/doc-<issue-number>-<short-description>
Examples:
  • feat/doc-123-add-bulk-signing
  • fix/doc-456-email-template-rendering
  • docs/doc-789-update-api-docs

Building the Project

Please ensure you can make a full production build before pushing code or creating PRs.
You can build the project with:
npm run build
For faster feedback during development, use type checking instead of a full build:
npx tsc --noEmit

AI-Assisted Development with OpenCode

Documenso uses OpenCode for AI-assisted development. OpenCode provides custom commands and skills to help maintain consistency and streamline common workflows.

Getting Started with OpenCode

1

Install OpenCode

curl -fsSL https://opencode.ai/install | bash
2

Configure your AI provider

Configure your preferred AI provider (Anthropic, OpenAI, Google) or use Zen for optimized coding models.
3

Run OpenCode

opencode

Available Commands

CommandDescription
/implement <spec-path>Implement a spec from .agents/plans/ autonomously
/continue <spec-path>Continue implementing a spec from a previous session
/interview <file-path>Deep-dive interview to flesh out a spec or design
/document <module-path>Generate MDX documentation for a module or feature
/commitCreate a conventional commit for staged changes
/create-plan <slug>Create a new plan file in .agents/plans/
/create-scratch <slug>Create a scratch file for notes in .agents/scratches/
/create-justification <slug>Create a justification file in .agents/justifications/

Typical Workflow

1

Create a plan

Use /create-plan my-feature to draft a spec for a new feature
2

Flesh out the spec

Use /interview .agents/plans/<file>.md to refine requirements
3

Implement

Use /implement .agents/plans/<file>.md to build the feature
4

Continue if needed

Use /continue .agents/plans/<file>.md to pick up where you left off
5

Commit

Use /commit to create a conventional commit
All AI-generated code must be thoroughly reviewed by the contributor before submitting a PR. You are responsible for understanding and validating every line of code you submit.

Agent Files

The .agents/ directory stores AI-generated artifacts:
  • .agents/plans/ - Feature specs and implementation plans
  • .agents/scratches/ - Temporary notes and explorations
  • .agents/justifications/ - Decision rationale and technical justifications
These files use a unique ID format ({word}-{word}-{word}-{slug}.md) to prevent conflicts.

Next Steps

Code Style

Learn about our code style and conventions

Pull Requests

Understand the PR process and requirements

Translations

Contribute translations and improve i18n

Local Development

Set up your development environment