# Software Contributions

Welcome to the AppFlowy software development documentation. Here you will find all of the resources that you need to start developing on the AppFlowy project.

These pages will guide you through the stages of setting up your development environment, connecting to our code base, learning how to code for AppFlowy and finally submitting code to the project.

## Environment setup

In order to start developing you will need to setup your environment. We have setup instructions for Linux, MacOS, and Windows.

{% content-ref url="software-contributions/environment-setup/building-on-linux" %}
[building-on-linux](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/environment-setup/building-on-linux)
{% endcontent-ref %}

{% content-ref url="software-contributions/environment-setup/building-on-macos" %}
[building-on-macos](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/environment-setup/building-on-macos)
{% endcontent-ref %}

{% content-ref url="software-contributions/environment-setup/building-on-windows" %}
[building-on-windows](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/environment-setup/building-on-windows)
{% endcontent-ref %}

## Coding Conventions

{% content-ref url="software-contributions/submitting-code/style-guides" %}
[style-guides](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/submitting-code/style-guides)
{% endcontent-ref %}

{% content-ref url="software-contributions/submitting-code/code-submission-guidelines" %}
[code-submission-guidelines](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/submitting-code/code-submission-guidelines)
{% endcontent-ref %}

## Architecture documentation

{% content-ref url="architecture" %}
[architecture](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/architecture)
{% endcontent-ref %}

* [How we built AppFlowy with Flutter and Rust](https://blog-appflowy.ghost.io/tech-design-flutter-rust/)
* [How we built a highly customizable rich-text editor for Flutter](https://blog-appflowy.ghost.io/how-we-built-a-highly-customizable-rich-text-editor-for-flutter/)

## How-tos

{% content-ref url="software-contributions/translation" %}
[translation](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/translation)
{% endcontent-ref %}

{% content-ref url="software-contributions/submitting-code/submitting-your-first-pull-request" %}
[submitting-your-first-pull-request](https://docs.appflowy.io/docs/~/changes/m6N8vk400Qj23REmHprl/essential-documentation/contribute-to-appflowy/software-contributions/submitting-code/submitting-your-first-pull-request)
{% endcontent-ref %}
