AppFlowy Documentation

Bring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data.

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy AppFlowy on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name appflowy --restart always appflowy/appflowy:latest
Configured Services & Ports
βš™οΈ app
image: appflowy/appflowy:latest
docker-compose.yml
yaml (docker-compose.yml)
version: "3"

# NOTE: Docker should be allowed to connect to the X server in your host prior
# to running `docker compose up`. Run `xhost local:docker` in the host to allow
# for those connections, otherwise the following error will occur:
#         Gtk-WARNING **: cannot open display: :0
# See https://stackoverflow.com/a/34586732/8401696 for more context.

services:
  app:
    build:
      context: ../../..
      dockerfile: ./frontend/scripts/docker-buildfiles/Dockerfile
    image: appflowy/appflowy:latest
    stdin_open: true
    # tty: true
    devices:
      - /dev/dri:/dev/dri # fixes MESA-LOADER error
    environment:
      - DISPLAY=$DISPLAY
      - NO_AT_BRIDGE=1 # fixes dbind-WARNING
    volumes:
      - $HOME/.Xauthority:/root/.Xauthority:rw
      - /tmp/.X11-unix:/tmp/.X11-unix
      - /dev/dri:/dev/dri
      - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
    network_mode: host

1. Project Overview & Quickstart (AppFlowy-IO/AppFlowy)

File: README.md

text
[AppFlowy](https://www.appflowy.com)

⭐️  The Open Source Alternative To Notion  ⭐️

User Installation

Built With

Stay Up-to-Date

Getting Started with development

Please view the documentation for OS specific
development instructions

Roadmap

If you'd like to propose a feature, submit a feature
request here
If you'd like to report a bug, submit a bug
report here

**Releases**

Please see the changelog for more details about a given release.

Contributing

Contributions make the open-source community a fantastic place to learn, inspire, and create. Any contributions you make
are greatly appreciated. Please look
at Contributing to AppFlowy
for details.

If your Pull Request is accepted as it fixes a bug, adds functionality, or makes AppFlowy's codebase significantly
easier to use or understand, Congratulations! If your administrative and managerial work behind the scenes sustains
the community, Congratulations! You are now an official contributor to AppFlowy.

Translations πŸŒŽπŸ—Ί

To add translations, you can manually edit the JSON translation files in /frontend/resources/translations, use
the inlang online editor, or
run npx inlang machine translate to add missing translations.

Join the community to build AppFlowy together

Why Are We Building This?

Notion has been our favourite project and knowledge management tool in recent years because of its aesthetic appeal and
functionality. Our team uses it daily, and we are on its paid plan. However, as we all know, Notion has its limitations.
These include weak data security and poor compatibility with mobile devices. Likewise, alternative collaborative
workplace management tools also have their constraints.

The limitations we encountered using these tools and our past work experience with collaborative productivity tools have
led to our firm belief that there is a glass ceiling on what's possible for these tools in the future. This emanates
from the fact that these tools will probably struggle to scale horizontally at some point and be forced to prioritize a
proportion of customers whose needs differ from the rest. While decision-makers want a workplace OS, it is impossible to
come up with a one-size fits all solution in such a fragmented market.

When a customer's evolving core needs are not satisfied, they either switch to another or build one from the ground up,
in-house. Consequently, they either go under another ceiling or buy an expensive ticket to learn a hard lesson. This is
a requirement for many resources and expertise, building a reliable and easy-to-use collaborative tool, not to mention
the speed and native experience. The same may apply to individual users as well.

All these restrictions necessitate our mission - to make it possible for anyone to create apps that suit their needs
well.

  • To individuals, we would like to offer Notion's functionality, data security, and cross-platform native experience.
  • To enterprises and hackers, AppFlowy is dedicated to offering building blocks and collaboration infra services to
    enable you to make apps on your own. Moreover, you have 100% control of your data. You can design and modify AppFlowy
    your way, with a single codebase written in Flutter and Rust supporting multiple platforms armed with long-term
    maintainability.

We decided to achieve this mission by upholding the three most fundamental values:

  • Data privacy first
  • Reliable native experience
  • Community-driven extensibility

We do not claim to outperform Notion in terms of functionality and design, at least for now. Besides, our priority
doesn't lie in more functionality at the moment. Instead, we would like to cultivate a community to democratize the
knowledge and wheels of making complex workplace management tools while enabling people and businesses to create
beautiful things on their own by equipping them with a versatile toolbox of building blocks.

License

Distributed under the AGPLv3 License. See LICENSE.md for
more information.

Acknowledgments

Special thanks to these amazing projects which help power AppFlowy:


File: doc/CONTRIBUTING.md

Contributing to AppFlowy

Hello, and welcome! Whether you are trying to report a bug, proposing a feature request, or want to work on the code you should go visit Contributing to AppFlowy

We look forward to hearing from you!


File: doc/roadmap.md

AppFlowy Roadmap ReadMe

AppFlowy Public Roadmap


File: frontend/appflowy_flutter/android/README.md

Description

This is a guide on how to build the rust SDK for AppFlowy on android.
Compiling the sdk is easy it just needs a few tweaks.
When compiling for android we need the following pre-requisites:

  • Android NDK Tools. (v24 has been tested).
  • Cargo NDK. (@latest version).

Getting the tools

  • Install cargo-ndk bash cargo install cargo-ndk.
  • Download Android NDK version 24.
  • When downloading Android NDK you can get the compressed version as a standalone from the site.
    Or you can download it through Android Studio.
  • After downloading the two you need to set the environment variables. For Windows that's a separate process.
    On macOS and Linux the process is similar.
  • The variables needed are '$ANDROID_NDK_HOME', this will point to where the NDK is located.

Cargo Config File
This code needs to be written in ~/.cargo/config, this helps cargo know where to locate the android tools(linker and archiver).
NB Keep in mind just replace 'user' with your own user name. Or just point it to the location of where you put the NDK.

toml
[target.aarch64-linux-android]
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang"

[target.armv7-linux-androideabi]
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi29-clang"

[target.i686-linux-android]
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android29-clang"

[target.x86_64-linux-android]
ar = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
linker = "/home/user/Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android29-clang"

Clang Fix
In order to get clang to work properly with version 24 you need to create this file.
libgcc.a, then add this one line.

text
INPUT(-lunwind)

Folder path: 'Android/Sdk/ndk/24.0.8215888/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/lib/linux'.
After that you have to copy this file into three different folders namely aarch64, arm, i386 and x86_64.
We have to do this so we Android NDK can find clang on our system, if we used NDK 22 we wouldn't have to do this process.
Though using NDK v22 will not give us a lot of features to work with.
This GitHub issue explains the reason why we are doing this.


Android NDK

After installing the NDK tools for android you should export the PATH to your config file
(.vimrc, .zshrc, .profile, .bashrc file), That way it can be found.

vim
export PATH=/home/sean/Android/Sdk/ndk/24.0.8215888

File: frontend/appflowy_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md

Launch Screen Assets

You can customize the launch screen with your own desired assets by replacing the image files in this directory.

You can also do it by opening your Flutter project's Xcode project with open ios/Runner.xcworkspace, selecting Runner/Assets.xcassets in the Project Navigator and dropping in the desired images.


File: frontend/appflowy_flutter/packages/flowy_infra_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md

Launch Screen Assets

You can customize the launch screen with your own desired assets by replacing the image files in this directory.

You can also do it by opening your Flutter project's Xcode project with open ios/Runner.xcworkspace, selecting Runner/Assets.xcassets in the Project Navigator and dropping in the desired images.


File: frontend/appflowy_flutter/packages/flowy_infra_ui/example/README.md

flowy_infra_ui_example

Demonstrates how to use the flowy_infra_ui plugin.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter, view our
online documentation, which offers tutorials,
samples, guidance on mobile development, and a full API reference.


File: frontend/appflowy_flutter/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/README.md

flowy_infra_ui_platform_interface

A new Flutter package project.

Getting Started

This project is a starting point for a Dart
package,
a library module containing code that can be shared easily across
multiple Flutter or Dart projects.

For help getting started with Flutter, view our
online documentation, which offers tutorials,
samples, guidance on mobile development, and a full API reference.


File: frontend/appflowy_flutter/packages/flowy_infra_ui/flowy_infra_ui_web/README.md

flowy_infra_ui_web

A new Flutter package project.

Getting Started

This project is a starting point for a Dart
package,
a library module containing code that can be shared easily across
multiple Flutter or Dart projects.

For help getting started with Flutter, view our
online documentation, which offers tutorials,
samples, guidance on mobile development, and a full API reference.

2. Official Technical Reference & Guides (AppFlowy-IO/AppFlowy-docs)

⭐ Start here

AppFlowy is an open-source alternative to Notion. You are in charge of your data and customizations.

Built for teams that need more control and flexibility

100% data control

  • You can host AppFlowy wherever you want; no vendor lock-in.

Unlimited customizations

  • Design and modify AppFlowy your way with an open core codebase.

One codebase supporting multiple platforms

  • AppFlowy is built with Flutter and Rust. What does this mean? Faster development, better native experience, and more reliable performance.

Built for individuals who care about data security and mobile experience

100% control of your data

  • Download and install AppFlowy on your local machine. You own and control your personal data.

Extensively extensible

  • For those with no coding experience, AppFlowy enables you to create apps that suit your needs. It's built on a community-driven toolbox, including templates, plugins, themes, and more.

Truly native experience

  • Faster, more stable with support for offline mode. It's also better integrated with different devices. Moreover, AppFlowy enables users to access features and possibilities not available on the web.

Community for hackers | Community for creators | Community for builders

Let’s democratize the knowledge and wheels of making complex workplace collaboration tools

  • It takes tremendous resources and expertise to build a great collaborative productivity tool. Don’t reinvent the wheels, let’s create the best open-source building blocks as infra to power others.

We collaboratively create apps that suit others’ needs by developing a versatile toolbox of plugins, templates, and more

  • Join us to build a toolbox that empowers anyone to create their own system - play and tweak without a glass ceiling on what’s possible.