Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/livefasteattrashraccoon/raccoonforfriendica
A Kotlin Multiplatform client for Friendica
https://github.com/livefasteattrashraccoon/raccoonforfriendica
android-app compose-multiplatform compose-ui coroutines fediverse-client friendica kmp kotlin kotlin-multiplatform mastodon-app mvi
Last synced: 3 months ago
JSON representation
A Kotlin Multiplatform client for Friendica
- Host: GitHub
- URL: https://github.com/livefasteattrashraccoon/raccoonforfriendica
- Owner: LiveFastEatTrashRaccoon
- License: gpl-3.0
- Created: 2024-08-04T21:23:55.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-10-27T07:40:34.000Z (3 months ago)
- Last Synced: 2024-10-27T18:54:26.805Z (3 months ago)
- Topics: android-app, compose-multiplatform, compose-ui, coroutines, fediverse-client, friendica, kmp, kotlin, kotlin-multiplatform, mastodon-app, mvi
- Language: Kotlin
- Homepage: https://livefasteattrashraccoon.github.io/RaccoonForFriendica
- Size: 5.57 MB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# RaccoonForFriendica
This is a client for the [Friendica](https://friendi.ca) 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
```> [!TIP]
> Make sure to check the "Include pre-releases" option (in order to receive all alpha and beta
> builds):## Screenshots
## 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](https://github.com/jasoncheng/dica),
whereas [Friendiqa](https://git.friendi.ca/lubuwest/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](https://gitlab.com/mysocialportal/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:
- [x] timeline view (Public/Local/Subscriptions) with ability to switch feed type
- [x] post detail, i.e. opening a conversation or reply in its context
- [x] user detail with ability to see posts/post and replies/pinned/media posts
- [x] login/logout to one's own instance
- [x] view notifications and check for unread items
- [x] view one's own profile
- [x] see trending posts/hashtags/news
- [x] see following recommendations
- [x] view all the posts containing a given hashtag
- [x] view followers and following of a given user
- [x] follow/unfollow other users
- [x] post actions (re-share, favorite, bookmark)
- [x] follow/unfollow hashtags
- [x] view list of one's own favorites
- [x] view list of one's own bookmarks
- [x] view list of one's own followed hashtags
- [x] view people who added as favorite/re-shared a given post
- [x] enable/disable notifications for other users
- [x] create a post/reply with image attachments and alt text
- [x] global search
- [x] open groups in "forum mode" (Friendica-specific)
- [x] delete one's own posts
- [x] edit one's own posts
- [x] mute/unmute user and see list of muted users
- [x] block/unblock user and see list of blocked users
- [x] OAuth and HTTP basic authentication modes
- [x] pin/unpin status to profile
- [x] manage one's own circles/following lists
- [x] polls (read-only, voting is not supported yet by the back-end)
- [x] manage follow requests
- [x] support for post addons (spoilers and titles)
- [x] multi-account
- [x] edit one's own profile (custom fields and images not supported yet by the back-end)
- [x] direct messages (Friendica-specific)
- [x] photo gallery (Friendica-specific)
- [x] advanced media visualization (videos, GIFs, multiple images)
- [x] scheduled posts and local drafts
- [x] create reports for posts and users
- [x] custom emojis
- [x] calendar (Friendica-specific + read-only, creating events is not supported yet by the back-end)## Technologies used
- [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform) for UI
- [Room](https://developer.android.com/kotlin/multiplatform/room) for local persistence
- [Koin](https://insert-koin.io/) for dependency injection
- [Voyager](https://voyager.adriel.cafe/) for navigation
- [Ktor](https://ktor.io/) and [Ktorfit](https://foso.github.io/Ktorfit) for networking
- [Lyricist](https://github.com/adrielcafe/lyricist) for l10n
- [Multiplatform settings](https://github.com/russhwolf/multiplatform-settings) for encrypted
preferences
- [MaterialKolor](https://github.com/jordond/MaterialKolor) for custom theme generation
- [Ksoup](https://github.com/MohamedRejeb/Ksoup) for HTML parsing
- [Colorpicker-compose](https://github.com/skydoves/colorpicker-compose) for custom color selection
- [Sentry](https://sentry.io) for crash reporting and user feedback collection## 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.