Raccoon/README.md

187 lines
8.9 KiB
Markdown
Raw Normal View History

2023-09-03 21:43:36 +02:00
<div align="center">
<img src="https://img.shields.io/badge/Kotlin-1.9.21-7f52ff?logo=kotlin" />
<img src="https://img.shields.io/badge/Android-26+-green" />
<img src="https://img.shields.io/badge/Jetpack_Compose-1.5.11-3e7fea?logo=jetpackcompose" />
2023-09-26 18:39:49 +02:00
<img src="https://img.shields.io/github/license/diegoberaldin/RaccoonForLemmy" />
2023-09-03 21:43:36 +02:00
</div>
<br />
<div align="center">
2023-09-26 18:39:49 +02:00
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/6785188f-9c2a-4622-ab6b-5aa116d27c31" width="250" height="auto" />
2023-09-03 21:43:36 +02:00
</div>
2023-09-26 18:39:49 +02:00
# Raccoon for Lemmy
2023-08-04 15:18:57 +02:00
2024-01-23 09:28:30 +01:00
A Kotlin Multiplatform client for Lemmy (mainly Android).
2023-08-04 00:04:07 +02:00
<div align="center">
<table>
<tr>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/a41fe45c-b1be-44bb-b044-fd6ef38bc205" width="310" alt="home screen" />
2023-08-04 00:04:07 +02:00
</td>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/a95bfe7b-fdab-4810-a1be-c6baf3270a51" width="310" alt="post detail" />
2023-09-06 08:22:21 +02:00
</td>
</tr>
<tr>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/621ab6ae-a08d-4a2a-a68b-e1c6924325e9" width="310" alt="explore screen" />
2023-09-06 08:22:21 +02:00
</td>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/93df3d76-efd0-47c8-a135-c7fae8caf9ca" width="310" alt="community detail" />
2023-09-06 08:22:21 +02:00
</td>
</tr>
<tr>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/103bd28d-f75e-4faa-8805-7ba21dc4a98d" width="310" alt="inbox screen" />
2023-09-06 08:22:21 +02:00
</td>
2023-11-16 22:59:00 +01:00
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/d1fff835-11a8-47ed-86c7-c04a531f890e" width="310" alt="settings screen" />
</td>
</tr>
<tr>
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/3529a977-3cb8-4465-a828-ee43bf056f77" width="310" alt="community info" />
</td>
<td>
<img src="https://github.com/diegoberaldin/RaccoonForLemmy/assets/2738294/b97f7e7f-57ee-4fe5-8f84-386b2c4ac111" width="310" alt="instance info" />
2023-08-04 00:04:07 +02:00
</td>
</tr>
</table>
</div>
2023-10-05 23:55:07 +02:00
Raccoon for Lemmy is a client for the federated aggregation and discussion platform Lemmy.
2023-11-08 13:56:11 +01:00
2023-10-05 23:55:07 +02:00
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.
2023-08-04 00:04:07 +02:00
2023-10-05 23:55:07 +02:00
## Main features
2023-08-04 00:04:07 +02:00
2023-10-05 23:55:07 +02:00
- view post feed and comments with different listing and sort types;
2024-01-23 09:28:30 +01:00
- possibility to upvote and downvote (with configurable swipe actions);
- community and user detail (with info about moderators/moderated communities);
2023-10-05 23:55:07 +02:00
- user profile with one's own posts, comments and saved items;
- inbox with replies, mentions and direct messages;
2024-01-23 09:28:30 +01:00
- global search with different result types (all, posts, comments, user, communities);
2023-10-24 21:15:02 +02:00
- create and edit new posts (with optional images);
2024-01-23 09:28:30 +01:00
- cross-post contents to other communities;
2023-10-24 21:15:02 +02:00
- reply to post and comments (and edit replies);
2024-01-23 09:28:30 +01:00
- mark posts as read (even while scrolling) and hide read contents;
2023-12-24 09:46:35 +01:00
- custom appearance (color scheme, fonts, text sizes, post layout, etc.);
2023-11-08 13:56:11 +01:00
- custom localization (independent of system settings);
- block users, communities and instances (the latter requires Lemmy >= 0.19);
- report post and comments to moderators;
2023-10-05 23:55:07 +02:00
- support for multiple accounts (and multiple instances) with account-specific settings;
2023-11-08 13:56:11 +01:00
- lazy scrolling (referred to as "zombie mode");
2023-10-05 23:55:07 +02:00
- explore all the communities on a given instance in guest mode;
2023-11-28 14:02:45 +01:00
- multi-community (community aggregation);
2024-01-23 09:28:30 +01:00
- report post and comments with a reason;
- view the moderation log;
- community moderation tool (examine and resolve reports, ban users, feature posts, block
further comments from posts, mark comments as distinguished, remove posts/comments).
2023-10-05 23:55:07 +02:00
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
2024-01-23 09:28:30 +01:00
directed to more demanding users.
2023-11-08 13:56:11 +01:00
2024-01-23 09:28:30 +01:00
Concerning customization, the ability to change some aspects like font face or size and app
colors, vote format, bar transparency and so on was of paramount importance from the very beginning.
Similarly, users should be able to use the app in their native language and change the UI language
independently from the system language.
2023-11-28 14:02:45 +01:00
2024-01-23 09:28:30 +01:00
This app is also intended for moderators who want to use their mobile device, offering moderation
tools (feature post, lock post, distinguish comment, remove post/comment, ban users) and the ability
to revert any of these actions.
2023-11-28 14:02:45 +01:00
2024-01-23 09:28:30 +01:00
The project is under active development, so expect new features to be added over time. Have a
2023-12-24 09:46:35 +01:00
look on the issues labeled with "feature" in the issue tracker to get an idea of what's going to
come next.
2023-10-05 23:55:07 +02:00
2023-12-24 09:46:35 +01:00
If you have ideas, feedback, suggestions or comments remember to speak up and use your
voice. You can add reports or request features and they will be considered.
2023-10-05 23:55:07 +02:00
## 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
2023-12-24 09:46:35 +01:00
with the challenges of a multiplatform environment, and a medium-sized project like this was an
ideal testing ground for that technology.
2023-10-05 23:55:07 +02:00
2024-01-23 09:28:30 +01:00
Secondly, I felt that the Android ecosystem of Lemmy apps was a little "poor" with few
2023-10-05 23:55:07 +02:00
native apps (fewer open source), while the "market" is dominated by iOS and cross platform clients.
2023-10-24 21:15:02 +02:00
I ❤️ Kotlin, I ❤️ Free and Open Source Software and I ❤️ native app development, so there was a
2024-01-23 09:28:30 +01:00
niche that needed to be filled.
2023-10-05 23:55:07 +02:00
2024-01-23 09:28:30 +01:00
Developing a new client was an opportunity to add all the good features that were "scattered" across
different apps, e.g. the feature richness of [Liftoff](https://github.com/liftoff-app/liftoff), the
multi-community feature of
2024-01-13 14:38:31 +01:00
[Summit](https://github.com/idunnololz/summit-for-lemmy) and the polished UI of the really great
2024-01-23 09:28:30 +01:00
[Thunder](https://github.com/thunder-app/thunder) and so on. This app tries to be configurable
enough to make users feel "at home" and choose what they want, while at the same time having a not
too cluttered interface (except for the Settings screen - I know!)
In the third place, this app has been a means to dig deeper inside Lemmy's internals and become more
humble and patient towards other apps because there are technical difficulties in having to deal
with a platform like Lemmy.
2023-12-24 09:46:35 +01:00
2024-01-13 14:38:31 +01:00
This involves a high level of discretion and personal taste, I know, but this project _is_ all
2023-12-24 09:46:35 +01:00
about experimenting and learning.
2023-10-05 23:55:07 +02:00
2024-01-23 09:28:30 +01:00
## Technologies:
2023-08-04 00:04:07 +02:00
2023-08-04 15:18:57 +02:00
- [Koin](https://github.com/InsertKoinIO/koin) for dependency injection
- [Voyager](https://github.com/adrielcafe/voyager) for screen navigation
2023-09-28 13:48:10 +02:00
- [Ktor](https://github.com/ktorio/ktor) and [Ktorfit](https://github.com/Foso/Ktorfit) for
2024-01-13 14:38:31 +01:00
networking
2023-08-04 15:18:57 +02:00
- [Moko resources](https://github.com/icerockdev/moko-resources) for resource management
- [Multiplatform settings](https://github.com/russhwolf/multiplatform-settings) for encrypted
preferences
2023-09-28 13:48:10 +02:00
- [SQLDelight](https://github.com/cashapp/sqldelight)
and [SQLCipher](https://github.com/sqlcipher/sqlcipher) for local persistence
2023-08-04 00:04:07 +02:00
2024-01-13 14:38:31 +01:00
More info about the technologies used in the project can be found in
2024-01-23 09:28:30 +01:00
the [CONTRIBUTING.md](https://github.com/diegoberaldin/RaccoonForLemmy/blob/master/CONTRIBUTING.md).
2024-01-23 23:15:54 +01:00
Additionally, you can have a look at
the [Tech notes](https://diegoberaldin.github.io/RaccoonForLemmy/tech_manual/main) section in
the project's homepage.
2023-09-22 13:30:52 +02:00
## Want to try it out?
2023-12-24 09:46:35 +01:00
Here are some options to install the application on your device.
2023-11-29 22:02:17 +01:00
<a href="https://github.com/ImranR98/Obtainium/releases">
<img src="https://img.shields.io/badge/Install with:-Obtainium-4d29a0" />
</a>
2023-12-24 09:46:35 +01:00
<br />
2023-11-29 22:02:17 +01:00
2023-12-24 09:46:35 +01:00
<a href="https://play.google.com/apps/testing/com.github.diegoberaldin.raccoonforlemmy.android">
2023-11-29 22:02:17 +01:00
<img src="https://img.shields.io/badge/Install with:-Google_Play-34a853" />
</a>
2024-01-23 23:15:54 +01:00
And please check out
the [user manual](https://diegoberaldin.github.io/RaccoonForLemmy/user_manual/main) if you need a
description of the screens.
2023-10-08 13:35:45 +02:00
## Want to leave your feedback or report a bug?
- open an issue on this
project's [issue tracker](https://github.com/diegoberaldin/RaccoonForLemmy/issues) to report bugs
or request new features
2023-10-24 21:15:02 +02:00
- create a post on the project's [community](https://lemmy.world/c/raccoonforlemmy) on
2023-10-08 13:35:45 +02:00
Lemmy.world for broader questions, opinions, personal feedback, suggestions, insults or whatever
you feel like writing
- join the [Matrix space](https://matrix.to/#/#raccoonforlemmy:matrix.org) dedicated to the project
2023-11-08 13:56:11 +01:00
- if you are a translator and want to help out with l10n or submit some corrections but you don't
feel confident with repository forks, pull requests, managing resource files, etc. feel free to
2023-12-24 09:46:35 +01:00
drop an email or contact me in any way.
Please remember: every contribution is welcome and everyone's opinion matters here. This is a
community project, open source, ad-free and free of charge, and it belongs to us all so don't be
afraid to get involved.
2023-11-08 13:56:11 +01:00
2024-01-23 09:28:30 +01:00
And don't forget every 🦝's motto: «Live Fast, Eat Trash» (abbreviated L.F.E.T.).