2023-10-24 19:55:34 +02:00
2023-10-24 19:55:34 +02:00
2023-09-27 19:35:56 +02:00
2023-09-28 13:40:17 +02:00
2023-09-25 21:00:36 +02:00
2023-09-25 21:00:36 +02:00
2023-07-20 22:50:21 +02:00
2023-10-24 21:15:02 +02:00
2023-09-28 13:40:17 +02:00


Raccoon for Lemmy

A Kotlin Multiplatform Mobile client for Lemmy.

Raccoon for Lemmy is a client for the federated aggregation and discussion platform Lemmy. The project started as an exercise to play around with Kotlin Multiplatform (KMP) and Compose multiplatform and gradually grew as a fully functional client with many features.

Main features

  • view post feed and comments with different listing and sort types;
  • possibility to upvote and downvote (with optional swipe actions)
  • community and user detail;
  • user profile with one's own posts, comments and saved items;
  • inbox with replies, mentions and direct messages;
  • global search on Lemmy with different result types (all, posts, comments, user, communities);
  • create and edit new posts (with optional images);
  • reply to post and comments (and edit replies);
  • mark posts as read and hide read contents;
  • custom appearance (color scheme, font, text size, post layout);
  • custom localization (more languages to be added in future versions);
  • block users, communities and instances;
  • report post and comments to mods;
  • support for multiple accounts (and multiple instances) with account-specific settings;
  • explore all the communities on a given instance in guest mode;
  • multi-community (aggregation).

Most clients for Lemmy currently offer the first points (with various degrees of completion), so there is nothing special about Raccoon for Lemmy, whereas the last ones are less common and are directed to more picky users (like me) who like to explore the Lemmy ecosystem and want to be able to group feed contents arbitrarily. I also like to be able to customize the appearance of my apps, so the ability to change font face or size and colors was of paramount importance to me.

The application is under active development, so expect new features to be added (e.g. video support, mod tools, etc.) and the layout is going to change and evolve (hopefully for the better) over time.

Why was the project started?

Because raccoons are so adorable, aren't they? 🦝🦝🦝

Joking apart, one of the main goals was to experiment with KMP and learn how to properly deal with the challenges of a multiplatform environment.

Secondly, as a means to dig deeper inside Lemmy's internals and become more humble and patient towards other apps whenever I found anything lacking or not implemented in an optimal way (according to my taste).

In the third place, I felt that the Android ecosystem of Lemmy apps was a little "poor" with few native apps (fewer open source), while the "market" is dominated by iOS and cross platform clients. I ❤️ Kotlin, I ❤️ Free and Open Source Software and I ❤️ native app development, so there was a "niche" that needed to be filled.

Plus, developing a new client was an opportunity to add all the features that I needed and that were "scattered" across different apps, e.g. I liked the feature richness of Liftoff (e.g. the possibility to explore all the communities of an external instance), the multi-community feature of Summit and the polished UI of Thunder and I wished I could have them all in the same app. If I saw a feature of Lemmy (e.g. sorting by "Controversial") that not all apps offer, I could add it myself, etc. This involves a high level of discretionality and personal taste, I know, but this project is all about experimenting and learning.

Technologies used:

  • Koin for dependency injection
  • Voyager for screen navigation
  • Ktor and Ktorfit for networking in conjunction with kotlinx-serialization for JSON marshalling
  • Moko resources for resource management
  • Kamel for lazy image loading, but later switched to Coil on Android because there was a major bug
  • Multiplatform settings for encrypted preferences
  • SQLDelight and SQLCipher for local persistence
  • for Markdown rendering, the initial approach involved using Markdown for parsing in conjunction with custom rendering but this approach proved difficult to extend and maintain so on Android the Markwon library was chosen insted.

Credits:

Want to try it out?

  • get it on Obtainium by simply adding this repo https://github.com/diegoberaldin/RaccoonForLemmy

Want to leave your feedback or report a bug?

  • open an issue on this project's issue tracker to report bugs or request new features
  • create a post on the project's community on Lemmy.world for broader questions, opinions, personal feedback, suggestions, insults or whatever you feel like writing
Description
Raccoon per Lemmy è un'app android per la piattaforma di aggregazione e discussione federata Lemmy. Raccoon for Lemmy è completamente open source e si propone di offrire un'esperienza su Lemmy senza annunci e il più funzionale possibile. È un'app dove chiunque dovrebbe sentirsi a casa, pertanto la localizzazione e la personalizzazione dell'interfaccia sono estremamente importanti.
https://diggita.com Readme
Languages
Kotlin 100%