# Relatica User Manual
## Introduction
[Friendica](https://friendi.ca/) is a free and open source decentralized social network project that
allows users and/or organizations to create a social network server that operates with a similar
sort of user experience idiom as Facebook (posts/comments threads, groups, etc). It interacts with
software projects like [Mastodon](https://mastodon.social/) (a Twitter-like decentralized social
network), [PixelFed](https://pixelfed.org/) (an Instagram-like decentralized social netwmaork),
and [PeerTube](https://peertube.tv/) (a YouTube-like decentralized social network) to create a web
of interacting users and content that combined create a network of millions of users across
thousands of servers called "the fediverse" or "social web". [Elena Rossini](https://elena.social/)
has created [this great video](https://news.elenarossini.com/fediverse-video/) to help describe this
concept in a very approachable way.
The Friendica project itself is solely focused on the development of the server side software. It
does not host any "main" instance. All Friendica hosts are independent. At the time of this writing
there are approximately 80 "public" servers in
the [Friendica directory site](https://dir.friendica.social/) from which users can choose
to join. The [Fediverse Observer](https://friendica.fediverse.observer/stats) statistics site shows
over 280 active Friendica servers on the fediverse, hosting thousands of users writing millions of
posts/comments each month.
The Friendica project also does not write any client side software for mobile/desktop devices.
Instead it has implemented application programming interfaces (APIs) that allow independent projects
to interface with the server software programmatically. There have been other independent mobile
apps that can interface with Friendica. Some projects have even targeted Friendica directly for
Android. At the beginning of this project there was no project for iOS however.
Relatica represents an independent development to develop a mobile and desktop client for Friendica
that will allow users to interface with Friendica servers that they have accounts on. It will allow
them to create/edit/delete posts, take pictures to upload, check notifications on posts they've
written, basically most of the usual types of things that one likes to do with Friendica or any
other social network. By "independent" I mean that the project is not a part of nor receives any
official sanction from the Friendica project itself. Because Relatica is written with a technology
called [Flutter](https://flutter.dev/) it runs on iOS, Android, Windows, macOS, and Linux.
See [the install documentation](install.md) for more information on how to install it on each
platform.
## Document Overview
This manual is a brief tour of various common features of the Relatica Friendica client and how to
use them. Many of the features are self explanatory and common for a social network application.
Many of the workflows follow the same paradigm that the main Friendica website uses. Others are more
unique and/or configurable. This manual attempts to make those features and/or workflows more clear.
## Interesting Features
Relatica has some interesting features that some users may find particularly useful. This section
has an overview of those features with links to the relevant sections below.
* ***Moderation Tools:*** Social networks will invariably have content that we don't want to see, or
worse content that needs to be reported for various reasons, see [Moderation](#moderation)
section. There you will see things like how to block (and unblock) users and report
posts/comments, how to manage your content warning/spoiler alert settings, adjust filters, etc.
* ***Multiple simultaneous users:*** I often need to toggle between multiple accounts, especially
for testing. Being able to easily have multiple accounts loaded at the same time lets me quickly
hop between the two. Many people use multiple accounts to have multiple online "personalities".
For example they may have a work account and a personal account. See
the [Your First Login](#your-first-login) section and [Profile Management](#profile-management)
* ***Slow network assistance:*** There are times when network performance can be very challenging
with a social media app. Ever been in a place where there is very weak antenna? Social media apps
can be very greedy in how they pull down multimedia assets. To help cut down on bandwidth
requirements when the network is slow there is a [Low Bandwidth Mode](#low-bandwidth-mode) which
allows the user to only download new images on demand. Slower networks, or in cases of an
over-burdened server, it may be necessary to manually adjust how long Relatica will wait for a
response before it times out. This is adjustable as well, see
the [Network Request Timeout](#network-request-timeout) section.
* ***Focus Mode:*** Focus mode is a mechanism that allows the user to lock the app out from all but
seeing their own posts, creating new posts, or editing old posts. The user can specify how long
they want the app in that mode, with an override available only after solving a puzzle of
whichever difficulty they decided when they set the lock. See the [Focus Mode](#focus-mode)
section.
* ***Non-infinite scroll:*** One of the biggest problems with social media apps is getting lost in
the infinite timeline of content. This was first implemented back in 2006 and since used
throughout all social media. Without a little "inertia" of clicking on a "More" button you can
scroll for an hour or more and not realize how much time has gone. Relatica *intentionally* does
not implement this. One of the benefits of not using a social network or social network app
incentivized to keep you clicking forever to make more money is that we aren't using this common
psychological trick to keep you in the app.
* ***Filters:*** As mentioned as part of the content moderation point above, Relatica has
implemented a complex filtering mechanism to let the user selectively hide or totally remove from
view posts that contain content they don't want to see. That filtering can be any combination of
words in the post, hashtags, specific account authors, or web hosts. See
the [Filters Screen](#filters) section for more details
* ***Per Network Capabilities Management:*** One of Friendica's greatest powers is its abilities to
interact with many different types of networks. That can sometimes create problems for users that
don't want interactions from some networks to potentially spill into others. For example, someone
may want to be able to read Threads posts but they don't want to reshare that content since it
would then be injecting Facebook/Meta content and callbacks into the rest of the fediverse. This
allows users to customize what is possible to do with the various social networks beyond whatever
the inherent limitations of those networks are. See
the [Network Capabilities Settings](#network-capabilities) section for more information.
## Your First Login
This section goes through the various steps of the first login. Upon launching the app you will see
an initial splash screen:
Upon initial loading the splash screen turns into the loading screen. Some important differences are
that it shows the version number as well as any startup statuses showing accounts it is logging
into, etc.
At this point, if you had previously used the app and left the app with any accounts still logged in
then you would be presented with a timeline for the last active user. This initial time however,
with no accounts loaded, you will be brought to the "Sign In" screen to login a new user:
This screen will come up again later but for now we need to add our first user. There is no account
creation mechanism from inside Relatica. You must have an existing account on a server already
created. The [Friendica directory site](https://dir.friendica.social/) has a list of active servers
as well as those that are accepting new accounts. Once you have that account you are ready to login
for the first time in Relatica.
There are two types of login types: a "Standard" Login and a "Username/Password" login. The standard
login will open up Relatica in a browser session to have you allow access to your account from the
Relatica client on this device. The "Username/Password" method is a legacy login where you directly
enter your username and password for the site in question. As implied by the name the "standard"
method is preferred for several security reasons. For that reason that is the workflow we will
explore.
First you'll need to enter in the domain name of your friendica server. In the below screenshot it
is "friendica.myportal.social". You can find this in the URL bar of your web browser. Then hit
the "Sign In" button.
When you hit the "Sign In" button you will be prompted asking if you agree with the server rules for
the Friendica server your account was created on. You have already agreed to those rules when you
created the account. This is just further confirming that in order to meet moderation requirements
as specified by Apple and Google stores. Violation of those rules will be subject to whichever
measurse yoru particular Friendica host metes out.
If your server has no particular rules the dialog box will look like this, with just a blanket
statement:
If your server has published rules it will list the rules explicitly, such as here:
If you do not respond "Yes" to the server's rules Relatica will not let you use the account and you
will drop back to the sign in screen with the snack bar popup at the bottom explaining what
happened:
If you do say "Yes" then Relatica will move on to the next phase of the sign in process. At this
point of the standard login process Relatica will have opened up a browser session for it to allow
you to authorize the Relatica app to use this account for logging in. If you aren't signed in
already you will be prompted to do so, such as in this screenshot:
Enter your login information at this point. Once you have done this you will be at the same step as
someone already logged in which is to approve for the app on this device to use this account's
credentials:
Once you hit the "Yes" button the rest of the authentication process will continue and Relatica will
bring you to the home screen, which is your standard timeline view:
You are now logged into your account within Relatica.
It is possible to have multiple accounts, manage those account logins, et cetera. For more
information about that see [Profile Management](#profile-management) section of this manual below.
## Tabs
### Timelines
#### Timeline Types
* Discuss partitions
* My Posts
* My Network
* Global Fediverse
* Local Fediverse
* Circles
* Groups
* Channels
#### Post/Comment actions
* Clicking on a post
* Popup menu
* Open post (same as clicking on it)
* Show Likers
* Show Reshares
* Block User
* Report Post/Comment
* Open in Browser
* Copy URL
* Copy Post Text
## Authoring Posts/Comments
### Notifications
### Contacts
### Explore
#### Searching
#### Trending
* Global Tags
* Local Tags
* Statuses
* Links
#### Followed Tags
#### Suggested Users
## Drawer Menu
### Profile Management
### Focus Mode
### Gallery Viewing/Management
### Direct Messages
### Blocks
### Filters
### Circles Management
### Settings
#### Low Bandwidth Mode
#### Network Request Timeout
#### Group Notifications by Type
#### Spoiler/Content Warning Hiding
#### Confirm Reporting Prompt
#### Open Tags in App
#### Dark Mode Theme Setting
#### Clear Local Caches
#### Logging (Setting Level and Viewing)
#### Network Capabilities
## Moderation
Relatica helps users with this via a
few moderation tools. First, it's possible to block accounts that the user dislikes, see
the [Blocking a User](#blocking-a-user) section. Second, it is possible to report posts/comments
to the server your account is logged into, see
### Reporting Posts/Comments
* No API method for doing reports so must be done in Friendica UI proper
* Workflow for report
* Menu item
* Confirm (user configurable)
* iOS Launches WebView with the post/comment highlighted
* Android?
### Blocking a User
* forces timeline reloads
### Managing User Blocks
### Filtering
### Controlling Spoiler/Content Warning/Hiding