FluffyChat is an open source, nonprofit and cute matrix messenger app.
Go to file
Sorunome 296af38b89 Merge branch 'soru/fix-image-bubble-thumbnails' into 'main'
fix: Thumbnails in the image bubble not always showing a cached thumbnail

See merge request famedly/fluffychat!594
2021-11-30 15:12:51 +00:00
android feat: Open im.fluffychat urls 2021-11-21 13:58:19 +01:00
assets Translated using Weblate (Finnish) 2021-11-28 20:52:59 +01:00
docs docs: Nicer browser badge 2021-11-20 09:42:41 +01:00
fonts fix backtick rendering on linux 2021-10-10 14:42:48 +13:00
ios CI: Update iOS fastlane 2021-11-27 12:12:58 +01:00
lib fix: Thumbnails in the image bubble not always showing a cached thumbnail 2021-11-30 15:54:48 +01:00
linux feat: Drag&Drop to send multiple files on desktop and web 2021-11-28 11:43:36 +01:00
macos CI: Update iOS fastlane 2021-11-27 12:12:58 +01:00
scripts CI: Update iOS fastlane 2021-11-27 12:12:58 +01:00
snap chore: Clean up sqflite stuff 2021-11-18 18:37:01 +01:00
test chore: Update SDK 2021-11-26 14:55:14 +01:00
web feat: Add splash screen 2021-09-19 14:30:09 +02:00
windows Fix excessive CPU usage on Windows, as described in https://github.com/flutter/flutter/issues/78517#issuecomment-846436695 2021-08-09 07:28:52 +00:00
.gitignore fix: No longer hide google services key file 2021-07-31 16:35:02 +02:00
.gitlab-ci.yml fix: Remove broken docker job 2021-11-20 10:43:58 +01:00
analysis_options.yaml refactor: Migrate utils and main.dart to null safety 2021-11-19 20:15:07 +01:00
CHANGELOG.md feat: Drag&Drop to send multiple files on desktop and web 2021-11-28 11:43:36 +01:00
config.sample.json chore: Make webBaseUrl configurable in config.json 2021-06-18 15:38:01 +02:00
fastlane chore: Add symlink to fastlane 2021-09-24 10:58:14 +02: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 docs: Update PRIVACY.md and make clear that app uses Hive and not Moor 2021-09-11 10:52:04 +00:00
pubspec.lock feat: Drag&Drop to send multiple files on desktop and web 2021-11-28 11:43:36 +01:00
pubspec.yaml feat: Drag&Drop to send multiple files on desktop and web 2021-11-28 11:43:36 +01:00
README.md docs: Update description 2021-11-06 10:34:33 +01:00
TRANSLATORS_GUIDE.md translation guide 2021-11-06 14:07:50 +13:00

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



FluffyChat is an open source, nonprofit and cute matrix messenger app. The app is easy to use but secure and decentralized.

Features

  • 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
  • Hides complexity of Matrix IDs behind simple QR codes
  • Custom emotes and stickers
  • Video calls via sharing links to Jitsi
  • Spaces
  • Compatible with Element, Nheko, NeoChat and all other Matrix apps
  • End to end encryption
  • Emoji verification & cross signing
  • And much more…

FluffyChat comes with a dream

Imagine a world where everyone can choose the messenger they like and is still able to chat with all of their friends.

A world where there are no companies spying on you when you send selfies to friends and lovers.

And a world where apps are made for fluffyness and not for profit. ♥

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.

3.1 If you want, enable Googles Firebase Cloud Messaging:

git apply ./scripts/enable-android-google-services.patch

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

  • Have a Mac with Xcode installed, and set up for Xcode-managed app signing
  • If you want automatic app installation to connected devices, make sure you have Apple Configurator installed, with the Automation Tools (cfgutil) enabled
  • Set a few environment variables
    • FLUFFYCHAT_NEW_TEAM: the Apple Developer team that your certificates should live under
    • FLUFFYCHAT_NEW_GROUP: the group you want App IDs and such to live under (ie: com.example.fluffychat)
    • FLUFFYCHAT_INSTALL_IPA: set to 1 if you want the IPA to be deployed to connected devices after building, otherwise unset
  • Run ./scripts/build-ios.sh

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.

Install the Gotify-UP app from fdroid. Next 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, please look at the UnifiedPush Common-Proxies repository.

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.

  • The Matrix Foundation for making and maintaining the emoji translations used for emoji verification, licensed Apache 2.0