Skip to main content
Welcome! We’re excited that you’re interested in contributing to AppFlowy. This guide will help you get started with contributing to the project.

Ways to Contribute

Code Contributions

Implement features, fix bugs, improve performance

Documentation

Write guides, improve docs, create tutorials

Bug Reports

Report issues, provide reproduction steps

Feature Requests

Suggest new features and improvements

Testing

Test new features, write tests, improve coverage

Translations

Help translate AppFlowy to your language

Community Support

Help others on Discord, answer questions

Design

Contribute UI/UX designs and improvements

Getting Started

1

Join the community

Connect with other contributors:
  • Discord - Active community chat
  • Forum - Discussions and support
  • GitHub - Code and issues
  • Twitter - Updates and announcements
2

Set up development environment

Follow the setup guide to configure your development environment.
3

Find an issue

Browse the issue tracker for:
  • good first issue - Great for beginners
  • help wanted - Community contributions welcome
  • bug - Bug fixes needed
  • enhancement - New features
4

Make your contribution

Follow the development workflow below to contribute your changes.

Development Workflow

1. Fork and Clone

1

Fork the repository

Click the “Fork” button on the AppFlowy GitHub repository.
2

Clone your fork

git clone https://github.com/<your-username>/AppFlowy.git
cd AppFlowy
3

Add upstream remote

git remote add upstream https://github.com/AppFlowy-IO/AppFlowy.git
git fetch upstream

2. Create a Branch

Create a new branch for your work:
git checkout -b feature/your-feature-name
Branch naming conventions:
  • feature/description - New features
  • fix/description - Bug fixes
  • docs/description - Documentation changes
  • refactor/description - Code refactoring
  • test/description - Test improvements

3. Make Changes

1

Write code

Make your changes following the code style guide.
2

Test your changes

Run tests to ensure nothing breaks:
# Run Dart tests
cd frontend/appflowy_flutter
flutter test

# Run Rust tests
cd ../rust-lib
cargo test
3

Write tests

Add tests for new functionality:
  • Unit tests for business logic
  • Widget tests for UI components
  • Integration tests for user flows

4. Commit Changes

Write clear, descriptive commit messages:
git commit -m "feat: add markdown export for documents

- Implement markdown serializer
- Add export button to document menu
- Update tests for export functionality

Closes #1234"
Commit message format:
<type>: <subject>

<body>

<footer>
Types:
  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting)
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks

5. Push and Create Pull Request

1

Push to your fork

git push origin feature/your-feature-name
2

Create pull request

  1. Go to your fork on GitHub
  2. Click “Pull request”
  3. Select your branch
  4. Fill out the PR template
  5. Click “Create pull request”

Pull Request Guidelines

PR Title

Use a clear, descriptive title following the commit message format:
feat: add offline mode support
fix: resolve document sync conflict
docs: update installation guide

PR Description

Your PR should include:
1

Description

Explain what changes you made and why.
2

Testing

Describe how you tested the changes:
  • Platforms tested (macOS, Windows, Linux, iOS, Android)
  • Test scenarios covered
  • Screenshots or videos (for UI changes)
3

Checklist

  • Code follows the style guide
  • Tests pass locally
  • Documentation updated
  • Changelog updated (if applicable)
4

Related issues

Reference related issues:
Closes #123
Related to #456

PR Size

Keep PRs focused and reasonably sized. Large PRs are harder to review and take longer to merge.
Good practices:
  • One feature/fix per PR
  • Break large changes into multiple PRs
  • Keep PRs under 500 lines when possible

Code Review Process

What to Expect

1

Automated checks

CI/CD pipelines will run:
  • Code formatting checks
  • Tests
  • Build verification
2

Human review

Maintainers will review your code and may:
  • Request changes
  • Ask questions
  • Suggest improvements
3

Address feedback

Make requested changes:
# Make changes
git add .
git commit -m "address review feedback"
git push
4

Merge

Once approved, a maintainer will merge your PR.

Review Timeline

  • Initial review: 1-7 days
  • Small PRs: Usually faster
  • Large PRs: May take longer
Be patient! Maintainers are volunteers and may take time to review.

Reporting Bugs

Found a bug? Help us fix it:
1

Check existing issues

Search existing issues to avoid duplicates.
2

Create bug report

Use the bug report template:
  • Clear title
  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Environment (OS, version)
  • Screenshots/videos
3

Provide details

Include:
  • AppFlowy version
  • Operating system
  • Error messages
  • Log files (if applicable)

Requesting Features

Have an idea? Share it:
1

Check roadmap

Review the public roadmap to see if it’s planned.
2

Create feature request

Use the feature request template:
  • Clear description
  • Use case
  • Expected behavior
  • Mockups (if applicable)
3

Discuss

Engage in discussion:
  • Why is this needed?
  • How should it work?
  • Are there alternatives?

Translation Contributions

Help translate AppFlowy:
1

Use inlang editor

Use the inlang online editor to add translations.
2

Or edit JSON files

Manually edit translation files in:
frontend/resources/translations/
3

Or use machine translation

npx inlang machine translate

Documentation Contributions

Improve the docs:
  • Fix typos and errors
  • Add examples and tutorials
  • Clarify confusing sections
  • Update outdated information
Documentation PRs are just as valuable as code contributions!

Community Guidelines

Code of Conduct

AppFlowy follows the Contributor Covenant Code of Conduct. Key principles:

Be Respectful

Treat everyone with respect and kindness

Be Constructive

Provide helpful, constructive feedback

Be Welcoming

Welcome newcomers and help them get started

Be Patient

Everyone is learning and growing

Getting Help

Stuck? Ask for help:
  • Discord: Real-time chat with community
  • Forum: Longer-form discussions
  • GitHub Discussions: Design discussions
  • Stack Overflow: Tag questions with appflowy

Recognition

We value all contributions:
1

Contributors page

All contributors appear on the contributors page.
2

Changelog credits

Significant contributions are credited in release notes.
3

Community spotlight

Outstanding contributors are featured in community updates.
Congratulations! If your PR is accepted, you’re now an official AppFlowy contributor!

License

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

Contributor License Agreement

Contributors retain copyright to their contributions but grant AppFlowy the right to use, modify, and distribute the code.

Next Steps

Code Style

Learn about coding conventions

Testing

Understand the testing approach

Architecture

Deep dive into the architecture

Setup

Set up your development environment

Resources

Thank You!

Thank you for contributing to AppFlowy! Your contributions help make AppFlowy better for everyone. Contributors

Build docs developers (and LLMs) love