# AppFlowy

Welcome to the AppFlowy software development documentation. Here you will find all of the resources that you need to start developing 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 set up your environment. We have set up instructions for Linux, MacOS, and Windows.

{% content-ref url="/pages/reM5WrqTPe1QcLS8EeLL" %}
[Building on Linux](/docs/documentation/appflowy/from-source/environment-setup/building-on-linux.md)
{% endcontent-ref %}

{% content-ref url="/pages/aChlxW6lI7bvFqOExjbX" %}
[Building on macOS](/docs/documentation/appflowy/from-source/environment-setup/building-on-macos.md)
{% endcontent-ref %}

{% content-ref url="/spaces/vs4LQcuzr0JR34ApS5sM/pages/Eq5Ta3tUwioCOO7AHFrn" %}
[Building on Windows](/docs/documentation/appflowy/from-source/environment-setup/building-on-windows.md)
{% endcontent-ref %}

## Coding Conventions

{% content-ref url="/pages/46722ohYHV2Vx4Xa9zX6" %}
[Git Conventions](/docs/documentation/software-contributions/conventions/git-conventions.md)
{% endcontent-ref %}

{% content-ref url="/pages/BC2AGL4wWD2E45UHlukO" %}
[Code Conventions](/docs/documentation/software-contributions/conventions/code-conventions.md)
{% endcontent-ref %}

{% content-ref url="/pages/QysOXXB4qLN3JYgYWEpD" %}
[Naming Conventions](/docs/documentation/software-contributions/conventions/naming-conventions.md)
{% endcontent-ref %}

## Architecture documentation

{% content-ref url="/pages/5dlAz5QqJLm8v1okJ0tf" %}
[Architecture](/docs/documentation/software-contributions/architecture.md)
{% 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="/pages/IEHViTtabpOP2kxI1rW6" %}
[Translate AppFlowy](/docs/documentation/appflowy/translation.md)
{% endcontent-ref %}

{% content-ref url="/pages/jEPs8tRXM5VHl1092w2x" %}
[Submitting your first Pull Request](/docs/documentation/software-contributions/submitting-code/submitting-your-first-pull-request.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appflowy.io/docs/documentation/appflowy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
