diff --git a/docs/bg.svg b/docs/bg.svg deleted file mode 100644 index 362754b44..000000000 --- a/docs/bg.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/code_style.md b/docs/code_style.md deleted file mode 100644 index 712830d54..000000000 --- a/docs/code_style.md +++ /dev/null @@ -1,138 +0,0 @@ -# Code Style - -FluffyChat tries to be as minimal as possible even in the code style. We try to keep the code clean, simple and easy to read. The source code of the app is under `/lib` with the main entry point `/lib/main.dart`. - -### Directory Structure: - - -- /lib - - /config - - app_config.dart - - ...Constants, styles and other configurations - - /utils - - handy_function.dart - - ...Helper functions and extensions - - /pages - - /chat - - chat.dart - - chat_view.dart - - /chat_list - - chat_list.dart - - chat_list_view.dart - - ...The pages of the app separated in Controllers and Views - - /widgets - - /layouts - - ...Custom widgets created for this project - - main.dart - - -Most of the business model is in the Famedly Matrix Dart SDK. We try to not keep a model inside of the source code but extend it under `/utils`. - -### Separation of Controllers and Views - -We split views and controller logic with stateful widgets as controller where the build method just builds a stateless widget which receives the state as the only parameter. A common controller would look like this: - -```dart -// /lib/controller/enter_name_controller.dart -import 'package:flutter/material.dart'; - -class EnterName extends StatefulWidget { - @override - EnterNameController createState() => EnterNameController(); -} - -class EnterNameController extends State { - final TextEditingController textEditingController = TextEditingController(); - String name = 'Unknown'; - - /// Changes the name with the content in the textfield. If the textfield is - /// empty, this breaks up and displays a SnackBar. - void setNameAction() { - if (textEditingController.text.isEmpty) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('You have not entered your name'), - ), - ); - return; - } - setState(() => name = textEditingController.text); - } - - @override - Widget build(BuildContext context) => EnterNameView(this); -} -``` - -So we have a controller for a `EnterName` view which as a `TextEditingController`, a state `name` and an action `void setNameAction()`. Actions must always be methods of a type, that we dont need to pass parameters in the corresponding view class and must have dartdoc comments. - -The view class could look like this: - -```dart -// /lib/views/enter_name_view.dart -import 'package:flutter/material.dart'; - -class EnterNameView extends StatelessWidget { - final EnterNameController controller; - - const EnterNameView(this.controller, {Key key}) : super(key: key); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text('Your name: ${controller.name}'), - ), - body: Center( - child: TextField( - controller: controller.textEditingController, - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: controller.setNameAction, - child: Icon(Icons.save), - ), - ); - } -} -``` - -Views should just contain code which describes the view. All other parameters or logic should be in the controller. The job of the view class is just to take the current state and build the widget tree and pipe the callbacks back. If there is any calulation necessary which is not solveable as a simple if-else or switch statement, it should be done in an external helper function unter `/lib/utils/`. - -All file names must be lower_snake_case. All views must have a `View` suffix and all controller must have a `Controller` suffix. Widgets may have a controller too but they should pass the callbacks back to the view where possible. Calling one line methods directly in the view is only recommended if there is no need to pass a parameter. - -To perform an action on state initialization we use the initState method: -```dart -@override - void initState() { - // TODO: implement initState - super.initState(); - } -``` - -And the dispose method to perform an action on disposing: -```dart -@override - void dispose() { - // TODO: implement dispose - super.dispose(); - } -``` - -To run code after the widget was created first we use the WidgetBindings in the initState: -```dart -@override - void initState() { - WidgetsBinding.instance!.addPostFrameCallback((_) { - // Do something when build is finished - }); - super.initState(); - } -``` - -### Formatting - -We do not allow code with wrong formatting. Please run `flutter format lib` if your IDE doesn't do this automatically. - -### Code Analyzis - -We do not allow codes with dart errors or warnings. We use the [pedantic](https://pub.dev/packages/pedantic) package for static code analysis with additional rules under `analysis_options.yaml`. diff --git a/docs/fdroid_repo.md b/docs/fdroid_repo.md deleted file mode 100644 index 77790e56f..000000000 --- a/docs/fdroid_repo.md +++ /dev/null @@ -1,56 +0,0 @@ -# F-Droid Repository - -Our own F-Droid repository contains the Google Services which is not possible in the main F-Droid repository. Release candidates -are also published on it. - -## Add Repository to F-Droid - -Easiest way to add the Repository is to either **scan the QR-Code** or if you are on your phone **directly click it**. - - - - - - -### If the QR-Code doesn't work: - -First check if you have f-droid installed. If not you can get it from: [https://f-droid.org/](https://f-droid.org/). -After you made sure you installed it and you didn't have it installed before you can try again the QR-Code. -If this still isn't working follow the next steps: - -1. Open the f-droid App -2. Go to the `Settings` Tab in the Bottom bar -3. Click the `Repositories` Action -4. Click on the plus sign at the top. -5. Fill in `https://fluffychat.im/repo/stable/repo/` into the top field and `5EDB5C4395B2F2D9BA682F6A1D275170CCE5365A6FA27D2220EA8D52A6D95F07` in the bottom field. - -## What is the fingerprint? - -The fingerprint of the Repository is: `5EDB5C4395B2F2D9BA682F6A1D275170CCE5365A6FA27D2220EA8D52A6D95F07` - -# Nightly Repository - -## Add Repository to F-Droid - -Easiest way to add the Repository is to either **scan the QR-Code** or if you are on your phone **directly click** it. - - - - - - -### If the QR-Code doesn't work: - -First check if you have f-droid installed. If not you can get it from: [https://f-droid.org/](https://f-droid.org/). -After you made sure you installed it and you didn't have it installed before you can try again the QR-Code. -If this still isn't working follow the next steps: - -1. Open the f-droid App -2. Go to the `Settings` Tab in the Bottom bar -3. Click the `Repositories` Action -4. Click on the plus sign at the top. -5. Fill in `https://fluffychat.im/repo/nightly/repo/` into the top field and `21A469657300576478B623DF99D8EB889A80BCD939ACA60A4074741BEAEC397D` in the bottom field. - -## What is the fingerprint? - -The fingerprint of the Repository is: `21A469657300576478B623DF99D8EB889A80BCD939ACA60A4074741BEAEC397D` diff --git a/docs/feature1.gif b/docs/feature1.gif new file mode 100644 index 000000000..db6c8beb8 Binary files /dev/null and b/docs/feature1.gif differ diff --git a/docs/feature2.gif b/docs/feature2.gif new file mode 100644 index 000000000..d6cf974b2 Binary files /dev/null and b/docs/feature2.gif differ diff --git a/docs/feature3.gif b/docs/feature3.gif new file mode 100644 index 000000000..cd56dc532 Binary files /dev/null and b/docs/feature3.gif differ diff --git a/docs/feature4.gif b/docs/feature4.gif new file mode 100644 index 000000000..4f1c35dfd Binary files /dev/null and b/docs/feature4.gif differ diff --git a/docs/feature5.gif b/docs/feature5.gif new file mode 100644 index 000000000..b301d8fa0 Binary files /dev/null and b/docs/feature5.gif differ diff --git a/docs/feature6.gif b/docs/feature6.gif new file mode 100644 index 000000000..d9fdba8d3 Binary files /dev/null and b/docs/feature6.gif differ diff --git a/docs/feature7.gif b/docs/feature7.gif new file mode 100644 index 000000000..ced2184e1 Binary files /dev/null and b/docs/feature7.gif differ diff --git a/docs/feature8.gif b/docs/feature8.gif new file mode 100644 index 000000000..95bf4e817 Binary files /dev/null and b/docs/feature8.gif differ diff --git a/docs/feature9.gif b/docs/feature9.gif new file mode 100644 index 000000000..a05001d08 Binary files /dev/null and b/docs/feature9.gif differ diff --git a/docs/index.html b/docs/index.html index cbd27caa5..e7f054cbc 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,16 +26,36 @@ - -

- Fluffy - Chat -

- - -
+
+ +
+ +

The cutest messenger in [matrix] +

+ + + +
-
- - - - - - - - - - - - - - - - - - - +
+
+ +

Easy to use

+

FluffyChat is designed to be as easy to use as possible. No one + should be left behind.

+
+
+ +

Material You

+

The well polished design is based on Material You and works great on + all platforms.

+
+
+ +

Secure

+

With end-to-end encryption, cross-signing and encrypted backups, + FluffyChat is one of the most secure messenger out there.

+
+ + +
+ +

Decentral

+

You can choose the server you want to use or + even self-host your own!

+
+
+ +

Push Notifications

+

You can choose between Firebase Cloud Messaging or the more privacy + focused Unified Push.

+
+
+ +

Spaces

+

With spaces you can join or create a community which organizes chats + and users. Using sub-spaces you can even nest your communities.

+
+ + +
+ +

Video calls

+

Still an experimental feature but you can already try out video and + audio calls, compatible with other [matrix] clients.

+
+
+ +

Stickers

+

Create your own sticker sets and share them with your friends. You + can even use them as inline emojis.

+
+
+ +

Compatible

+

FluffyChat is compatible with any other [matrix] client like Element, + Nheko, Cinny + or NeoChat. +

+
-
- Source - code - - - Privacy - - - Changelog - - - Translations - - - FluffyChat F-Droid - repository - - - Contact - - - Created - by Krille Fear +
+
- + \ No newline at end of file diff --git a/docs/info-logo.png b/docs/info-logo.png new file mode 100644 index 000000000..ceb42f09b Binary files /dev/null and b/docs/info-logo.png differ diff --git a/docs/mastodon.svg b/docs/mastodon.svg new file mode 100644 index 000000000..0f8baebfc --- /dev/null +++ b/docs/mastodon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/qr-nightly.svg b/docs/qr-nightly.svg deleted file mode 100644 index cabc07a4b..000000000 --- a/docs/qr-nightly.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/qr-stable.svg b/docs/qr-stable.svg deleted file mode 100644 index e6560a080..000000000 --- a/docs/qr-stable.svg +++ /dev/null @@ -1,543 +0,0 @@ - - - - -Created by potrace 1.16, written by Peter Selinger 2001-2019 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -