base on The cutest instant messenger in the [matrix] ![Screenshot](https://github.com/krille-chan/fluffychat/blob/main/assets/banner_transparent.png?raw=true) [FluffyChat](https://fluffy.chat) is an open source, nonprofit and cute [[matrix](https://matrix.org)] client written in [Flutter](https://flutter.dev). The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone. ### Links: - 🌐 [[Weblate] Translate FluffyChat into your language](https://hosted.weblate.org/projects/fluffychat/) - 🌍 [[m] Join the community](https://matrix.to/#/#fluffy-space:matrix.org) - 📰 [[Mastodon] Get updates on social media](https://troet.cafe/@krille) - 🖥️ [[Famedly] Server hosting and professional support](https://famedly.com/kontakt) - 💝 [[Liberapay] Support FluffyChat development](https://de.liberapay.com/KrilleChritzelius) <a href='https://ko-fi.com/C1C86VN53' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi5.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a> ### Screenshots: <img src="https://github.com/krille-chan/fluffychat-website/blob/main/src/assets/screenshots/mobile.png?raw=true" height="300"> <img src="https://github.com/krille-chan/fluffychat-website/blob/main/src/assets/screenshots/desktop.png?raw=true" height="300"> # 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 - 🎨 Material You design - 📟 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 - 🔒 Encrypted chat backup - 😀 Emoji verification & cross signing ... and much more. # Installation Please visit the website for installation instructions: - https://fluffy.chat # How to build 1. To build FluffyChat you need [Flutter](https://flutter.dev) and [Rust](https://www.rust-lang.org/tools/install) 2. Clone the repo: ``` git clone https://github.com/krille-chan/fluffychat.git cd fluffychat ``` 3. Choose your target platform below and enable support for it. 3.1 If you want, enable Googles Firebase Cloud Messaging: `./scripts/add-firebase-messaging.sh` 4. Debug with: `flutter run` ### Android * 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 * Build with: ```bash ./scripts/prepare-web.sh # To install Vodozemac 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`. All values there are optional. **Please only the values, you really need**. If you e.g. only want to change the default homeserver, then only modify the `defaultHomeserver` key. ### Desktop (Linux, Windows, macOS) * Enable Desktop support in Flutter: https://flutter.dev/desktop #### Install custom dependencies (Linux) ```bash sudo apt install libjsoncpp1 libsecret-1-dev libsecret-1-0 librhash0 libwebkit2gtk-4.0-dev ``` * Build with one of these: ```bash flutter build linux --release flutter build windows --release flutter build macos --release ``` # Special thanks * <a href="https://github.com/fabiyamada">Fabiyamada</a> is a graphics designer and has made the fluffychat logo and the banner. Big thanks for her great designs. * <a href="https://github.com/advocatux">Advocatux</a> 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. * <a href="https://github.com/madsrh/WoodenBeaver">WoodenBeaver</a> sound theme for the notification sound. * The Matrix Foundation for making and maintaining the [emoji translations](https://github.com/matrix-org/matrix-spec/blob/main/data-definitions/sas-emoji.json) used for emoji verification, licensed Apache 2.0 ", Assign "at most 3 tags" to the expected json: {"id":"9408","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"