LiveFastEatTrashRaccoon / RaccoonForFriendica

A Kotlin Multiplatform client for Friendica
https://livefasteattrashraccoon.github.io/RaccoonForFriendica
GNU General Public License v3.0
12 stars 0 forks source link
android-app compose-multiplatform fediverse-client friendica kotlin kotlin-multiplatform mastodon-app
badge for Kotlin badge for Gradle badge for Android badge for Compose Multiplatform badge for project license badge for build status badge for unit test status

RaccoonForFriendica

This is a client for the Friendica federated social platform powered by Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP). The reference platform is currently Android.

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 part of its name, making clear that the two projects are related and share a lot of common heritage and are maintained by the same people.

Want to try it?

Here are some options to install the application on your device. The best way to install testing APKs is Obtainium, please insert this repository's URL as a source.

https://github.com/LiveFastEatTrashRaccoon/RaccoonForFriendica
Get it on Obtainium banner

[!TIP] Make sure to check the "Include pre-releases" option (in order to receive all alpha and beta builds):

Screenshots

timeline screen with subscriptions user detail screen post detail screen list of posts containing a followed hashtag post editor with preview dialog settings screen with color bottom sheet explore screen (hashtags tab) notifications screen group opened in forum mode thread screen within a group with replies

Why was the project started and why is it called like that?

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.

Development roadmap

The app is under ongoing development, here is a list of the features that are being implemented:

Technologies used

Disclaimer

[!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 agreed roadmap) will be evaluated depending on the available time.