Website • View Demo • Report Bug • Roadmap • Translate Twake
Twake Chat is an open source, decentralized chat app based on the Matrix protocol. It was developed by Linagora. Twake Chat is a good option for individuals and organizations who are looking for a secure and decentralized chat app. It is also a good choice for developers who want to build their own Matrix-based chat apps.
- Send all kinds of messages, images and files
- Voice messages
- Location sharing
- Push notifications
- Unlimited private and public group chats
- Public channels with thousands of participants
- Feature rich group moderation including all matrix features
- Discover and join public groups
- Dark mode
- Custom themes
- Hides complexity of Matrix IDs behind simple QR codes
- Custom emotes and stickers
- Spaces
- Compatible with Element, Nheko, NeoChat and all other Matrix apps
- End to end encryption
- Emoji verification & cross signing
- And much more...
Please make sure to run the following command at first, to verify your code before each commit:
bash scripts/config-pre-commit.sh
- Flutter 3.24 (more recent versions are not yet supported)
You can at any moment verify your flutter installation using:
flutter doctor -v
If you only plan to work on the web
target we recommend installing Google Chrome as it is the default supported target (Flutter being developped by Google).
It is also required to have a web ready version of libolm available in the assets/js/package
folder. You can build a version using:
docker run -v ./assets/js/package:/package nixos/nix:2.22.1
# within the docker
nix build -v --extra-experimental-features flakes --extra-experimental-features nix-command gitlab:matrix-org/olm/3.2.16?host=gitlab.matrix.org\#javascript
cp /result/javascript/* /package/. -v
exit
# back on your host
sudo chown $(id -u):$(id -g) ./assets/js/package -Rv
- An implementation of JDK 17 (tested with openjdk-17.0.13+11)
- An implementation of JDK 8 (tested with openjdk-8u432-b06)
- (Optional) Android Studio
- An Android SDK with:
- Android build tools: 30.0.3
- Android platform: 31, 32, 33, 34
- CMake: 3.18.1
- Android NDK: 23.1.7779620
- Google APIs: enabled
Note: Gradle will try to install the JDK 8. If for any reasons the operation failed, try to install your own and use this method to tell Gradle where to find it.
- Lib JsonCPP
- Lib Secret
- Lib RHash
- Lib WebKit 2 GTK
- Lib OLM
If needed, a complete list is available in the flake.nix
.
On Ubuntu, the following command should install all the required elements:
sudo apt install libjsoncpp1 libsecret-1-dev libsecret-1-0 librhash0 libwebkit2gtk-4.0-dev libolm3
In addition, the Linux build requires Rust. For macOS or Linux, execute the following command in a terminal emulator:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
For Windows, you can use the Rust Installer.
In case you have Rust already installed, make sure to update it to latest version:
rustup update
A flake.nix
is provided in order to ease the process of setting up your dev environment.
It should be automatically loaded if you have [nix-direnv](https://github.com/nix-community/nix-direnv/)
installed and correctly configured.
Supported platforms:
- Linux x86_64
- MacOS aarch_64
- MacOS x86_64
- Windows
In order to run the web target you must provide a default configuration file. This can be done by copying the config.sample.json
to config.json
.
Here is an example working with matrix.org
:
{
"application_name": "Twake Chat",
"application_welcome_message": "Welcome to Twake Chat!",
"default_homeserver": "matrix.org",
"privacy_url": "https://twake.app/en/privacy/",
"render_html": true,
"hide_redacted_events": false,
"hide_unknown_events": false,
"issue_id": "",
"app_grid_dashboard_available": true,
"homeserver": "https://matrix.org/",
"platform": "localDebug",
"default_max_upload_avatar_size_in_bytes": 1000000,
"dev_mode": true,
"qr_code_download_url": "https://sign-up.twake.app/download/chat",
"enable_logs": true,
"support_url": "https://twake.app/support"
}
Before running the app, please update the dependancies:
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
Now you can run the project:
flutter devices # To list available run targets
# flutter run -d <device>, e.g:
flutter run -d chrome
Please use the helper script corresponding to your target in order to build:
./scripts/build-web.sh
# ./scripts/build-linux.sh ## For release purposes
./scripts/build-linux-debug.sh
# ./scripts/build-android-apk.sh ## For release purposes
./scripts/build-android-debug.sh
-
Create a config file
config.json
in the root of the project with the following docs -
Run the image using the following command:
docker run -d -p <host port>:<host port> -e TWAKECHAT_LISTEN_PORT=<host port> --name <container name> -v <host path>:/usr/share/nginx/html/web/config.json linagora/twake-web:<tag>
- Open the browser and go to
http://localhost:<hostport>
- Create a config file
config.json
withmatrix.org
{
"app_grid_dashboard_available": true,
"application_name": "Twake Chat",
"application_welcome_message": "Welcome to Twake Chat!",
"default_homeserver": "matrix.org",
"hide_redacted_events": false,
"hide_unknown_events": false,
"homeserver": "https://matrix.org/",
"issue_id": "",
"privacy_url": "https://twake.app/en/privacy/",
"render_html": true
}
- Run the image using the following command with my port is
6868
:
docker run -d -p 6868:6868 -e TWAKECHAT_LISTEN_PORT=6868 --name twake-web -v /path/to/config.json:/usr/share/nginx/html/web/config.json linagora/twake-web:v2.6.5
- Open the browser and go to
http://localhost:6868
-
FluffyChat is the original repository of this project. A huge thanks to the upstream repository for their vital contributions, not only for this project but also for Matrix SDK in Dart
-
Fabiyamada is a graphics designer from Brasil and has made the fluffychat logo and the banner. Big thanks for her great designs.
-
Advocatux has made the Spanish translation with great love and care. He always stands by my side and supports my work with great commitment.
-
Thanks to MTRNord and Sorunome for developing.
-
Also thanks to all translators and testers! With your help, fluffychat is now available in more than 12 languages.
-
Noto Emoji Font for the awesome emojis.
-
WoodenBeaver sound theme for the notification sound.
-
The Matrix Foundation for making and maintaining the emoji translations used for emoji verification, licensed Apache 2.0