This is a client for the Friendica federated social platform powered by Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP). The app is also compatible with Mastodon and Mastodon-like backends.
The project is heavily inspired by the RaccoonForLemmy app for Lemmy, which demonstrated something like this can be achieved with this tech stack. This is why it retains its name, making clear that the two projects are related and share a lot of common heritage and are maintained by the same people.
Here are some options to install the application on your device:
If you use IzzyOnDroid as a source in your FDroid app, you can easily install the app, please refer to the link in the badge above to see the app details.
On the other hand, if you want to be able to test each pre-release build as soon as it is published
here on GitHub, apart from downloading the APKs from the
Releases page, you can also
use Obtainium and add a new app by inserting
https://github.com/LiveFastEatTrashRaccoon/RaccoonForFriendica
as a source.
Tip
On Obtainium, please make sure to check the "Include pre-releases" option: by doing so you will be able to receive all alpha and beta builds automatically.
Because raccoons are so adorable, aren't they? 🦝🦝🦝
Joking apart, one of the main goals was to experiment with Kotlin multiplatform (KMP) and Compose Multiplatform (CMP). This project has a fair degree of complexity and allows to put under stress the existing solutions and evaluate what they behave like with common tasks (image loading, HTML rendering, file system and gallery access, networking, local database management, shared preferences, navigation, access to resources like fonts/drawables/localization, etc.).
Secondly, the Android ecosystem for Friendica was a little lacking, especially with few native apps (except Dica, whereas Friendiqa is a very cute example of Qt on Android, although not a traditional mobile app at all). I ❤️ Kotlin, I ❤️ Free and Open Source Software and I ❤️ native app development, so there was a niche that could be filled.
In the third place, we were wondering whether the adoption of a platform like Friendica could be improved with a user-friendly and easy to use mobile app that abstracts away some of the complications of the current web UI. This is why this app looks a lot like a plain Mastodon client (and technically speaking it is a Mastodon client) – adding on top of it some Friendica specific features such as media gallery, circle management, direct messages and support for ActivityPub groups.
With this respect, it takes a different approach compared to other existing solutions like the feature-complete Relatica app, in trying to look familiar to users with a UI they are already accustomed to, adding a thin layer on top of it to support the additional features.
This project is all about experimenting and learning, so please be patient if you find some bugs or missing features.
The app is under ongoing development, here is a list of the features that are being implemented:
- timeline view (Public/Local/Subscriptions) with ability to switch feed type
- post detail, i.e. opening a conversation or reply in its context
- user detail with ability to see posts/post and replies/pinned/media posts
- login/logout to one's own instance
- view notifications and check for unread items
- view one's own profile
- see trending posts/hashtags/news
- see following recommendations
- view all the posts containing a given hashtag
- view followers and following of a given user
- follow/unfollow other users
- post actions (re-share, favorite, bookmark)
- follow/unfollow hashtags
- view list of one's own favorites
- view list of one's own bookmarks
- view list of one's own followed hashtags
- view people who added as favorite/re-shared a given post
- enable/disable notifications for other users
- create a post/reply with image attachments and alt text
- global search
- open groups in "forum mode" (Friendica-specific)
- delete one's own posts
- edit one's own posts
- mute/unmute user and see list of muted users
- block/unblock user and see list of blocked users
- OAuth and HTTP Basic authentication modes
- pin/unpin status to profile
- manage one's own circles/following lists
- polls (read-only, voting is not supported yet by the back-end)
- manage follow requests
- support for post addons (spoilers and titles)
- multi-account
- edit one's own profile (custom fields and images not supported yet by the back-end)
- direct messages (Friendica-specific)
- photo gallery (Friendica-specific)
- advanced media visualization (videos, GIFs, multiple images)
- scheduled posts and local drafts
- create reports for posts and users
- custom emojis
- event calendar (Friendica-specific, creating events is not supported yet by the back-end)
- pull notifications with background checks
- (experimental) push notifications using UnifiedPush
- Calf for a web view implementation;
- Coil for image loading;
- Compose Multiplatform for UI;
- Compose ColorPicker for custom color selection;
- Compose Multiplatform Media Player for video playback;
- Connectivity to detect network state changes;
- Koin for dependency injection;
- Ksoup for HTML parsing;
- Ktor and Ktorfit for networking;
- Lyricist for localization;
- Multiplatform Settings for encrypted shared preferences;
- MaterialKolor for custom theme generation;
- Room for local persistence;
- Sentry for crash reporting and user feedback collection;
- UnifiedPush for push notifications;
- Voyager for navigation;
- use the "Report an issue" in-app form you can find in the "App information" dialog (it works only if you have enabled crash reporting);
- follow the Friendica group to receive updates about the new releases and participate in public discussions;
- join our Matrix room to reach out to the developers or other users;
- use the GitHub issue tracker to report bugs or request features;
- finally, if none of the above methods fits your needs you can write an email.
Warning
This is an experimental project and some technologies it is build upon are still in pre-production stage, moreover this is a side-project developed by volunteers in their spare time, so use at your own risk.
You shouldn't expect a full-fledged and fully functional app; you should be prepared to occasional failures, yet-to-implement features and areas where (a lot of) polish is needed.
Contributions are welcome and new feature requests (outside the pre-agreed roadmap) will be evaluated depending on the available time.