FluffyChat is an open source, nonprofit and cute matrix messenger app.
Go to file
Jelv 04f55322ab
Translated using Weblate (Dutch)
Currently translated at 100.0% (442 of 442 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/
2021-06-22 16:53:38 +02:00
android chore: Update Gradle 2021-06-06 11:10:00 +02:00
assets Translated using Weblate (Dutch) 2021-06-22 16:53:38 +02:00
docs fix: Web favicon 2021-06-22 14:39:41 +02:00
fonts fix: embedding all fonts to fix the font error 2021-01-20 20:57:17 +01:00
ios Delete Runner.app.dSYM.zip 2021-06-20 09:39:09 +00:00
lib feat: Show progress bar and sync status 2021-06-22 15:46:52 +02:00
linux change: Linux default window size 2021-06-20 12:45:57 +02:00
macos Revert "chore: Update dependencies" 2021-06-18 09:52:37 +00:00
scripts chore: Update iOS fastlane 2021-06-20 08:46:12 +02:00
snap chore: Use flutter stable extension in snapcraft 2021-06-06 10:40:06 +02:00
test refactor: Switch to pub.dev version of matrix sdk 2021-06-18 10:29:48 +02:00
web Update index.html 2021-06-19 17:06:42 +00:00
windows feat: Next version 2020-11-25 11:36:33 +01:00
.gitignore fix: Add Podfile to gitignore 2021-03-27 20:19:03 +01:00
.gitlab-ci.yml Update .gitlab-ci.yml 2021-06-18 10:36:08 +00:00
.metadata Initial commit 2020-01-01 19:10:13 +01:00
analysis_options.yaml refactor: Sort dependencies 2021-04-30 16:57:04 +02:00
CHANGELOG.md chore: Bump version 2021-06-20 10:44:00 +02:00
CODE_STYLE.md docs: Update code style 2021-05-22 08:59:49 +02:00
config.sample.json chore: Make webBaseUrl configurable in config.json 2021-06-18 15:38:01 +02:00
CONTRIBUTING.md docs: Update readme and contributing 2021-03-13 07:42:45 +00:00
HOWTOFORK.md docs: Make howtofork.md less misunderstandable 2021-01-25 21:04:53 +00:00
l10n.yaml refactor: Move translations to assets 2021-05-22 08:42:39 +02:00
LICENSE Add license and gitlab pages stuff 2020-01-02 13:42:49 +00:00
PRIVACY.md Update PRIVACY.md 2020-10-03 08:39:57 +00:00
pubspec.lock feat: Show progress bar and sync status 2021-06-22 15:46:52 +02:00
pubspec.yaml feat: Show progress bar and sync status 2021-06-22 15:46:52 +02:00
README.md update readme 2021-05-26 18:52:04 +02:00

Join the community - Follow me on Mastodon - Translate FluffyChat - Translate the website - Website - Famedly Matrix SDK - Server hosting and professional support



FluffyChat is a multi-platform Matrix client written in Dart/Flutter. It compiles to native code von Android, iOS, macOS, Windows and Linux and renders with Skia on the web. FluffyChat is just a hobby project from the developers of Famedly and licensed under AGPLv3. It follows a design philosophy to be minimalistic, inclusive and easy to use.

How to build

  1. Install flutter

  2. Clone the repo:

git clone --recurse-submodules https://gitlab.com/famedly/fluffychat
cd fluffychat
  1. Choose your target platform below and enable support for it.

  2. Debug with: flutter run

Android

  • Install CMake from the SDK Manager

  • Install ninja:

sudo apt install ninja-build
  • Build with: flutter build apk

iOS / iPadOS

  • With xcode you cant build a release version without our cert. :-/ Use flutter run --profile to have a working version on your iOS device.

Web

./scripts/prepare-web.sh
flutter build web --release
  • Optionally configure by serving a config.json at the same path as fluffychat. An example can be found at config.sample.json. None of these values have to exist, the ones stated here are the default ones. If you e.g. only want to change the default homeserver, then only modify the default_homeserver key.

Desktop (Linux, Windows, macOS)

flutter build linux --release
flutter build windows --release
flutter build macos --release

How to add translations for your language

You can use Weblate to translate the app to your language:

https://hosted.weblate.org/projects/fluffychat/

If you want to get your translated strings approved, please ask in our support room!

  1. Replace the non-translated string in the codebase:
Text("Hello world"),

with a method call:

Text(L10n.of(context).helloWorld),

and add the following import if missing:

import 'package:flutter_gen/gen_l10n/l10n.dart';
  1. Add the string to /lib/l10n/l10n_en.arb:

(The following example need to be sorounded by the usual json {} and after the @@locale key)

Example A:

"helloWorld": "Hello World!",
"@helloWorld": {
  "description": "The conventional newborn programmer greeting"
}

Example B:

"hello": "Hello {userName}",
"@hello": {
  "description": "A message with a single parameter",
  "placeholders": {
    "userName": {
      "type": “String”,
      “example”: “Bob”
    }
  }
}
  1. For testing just run a regular build without extras

Android push notifications without FCM

Fluffychat has the ability to receive push notifications on android without FCM via the UnifiedPush project, e.g. using gotify as push backend. As the project is still pretty new there might still be some bugs, overall it seems to be working, though.

While UnifiedPush also supports p2p push via NoProvider2Push here the gotify setup will be outlined. Adapt re-write proxies accordingly, if you want to use a different push provider.

For self-hosted push with gotify you have to install and configure gotify-server with UnifiedPush support.

Next, you add the repo.unifiedpush.org repository to fdroid and install the gotify client via it. Log into your gotify account and push notifications should work!

Matrix-specific re-write proxy

Until MSC2970 is figured out we unfortunately need another simple re-write proxy. By default the one at https://matrix.gateway.unifiedpush.org is used, however you can easily self-host it. For that, add to your nginx config on the same domain you serve gotify the following (change relay.example.tld):

resolver 9.9.9.9;

location /_matrix/push/v1/notify {
    set $target '';
    if ($request_method = GET ) {
        return 200 '{"gateway":"matrix","unifiedpush":{"gateway":"matrix"}}';
    }
    access_by_lua_block {
        local cjson = require("cjson")
        ngx.req.read_body()
        local body = ngx.req.get_body_data()
        local parsedBody = cjson.decode(body)
        local accepted = "https://relay.example.tld/"
        ngx.var.target = parsedBody["notification"]["devices"][1]["pushkey"]
        ngx.req.set_body_data(body)
        if(string.sub(ngx.var.target,1,string.len(accepted))~=accepted) then ngx.var.target="http://0.0.0.0/"
        end
    }
    proxy_set_header Content-Type application/json;
    proxy_set_header Host $host;
    proxy_pass $target;
}

Special thanks to

  • 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.

  • Thanks to Mark for all his support and the chat background.

  • 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.