Krixec/Mycelium
1
0
Fork
You've already forked Mycelium
0
Mycelium Messenger Android App
  • Kotlin 100%
Find a file
2024年01月08日 19:54:44 +01:00
app Fixed wrong default entry on newly created databases keeping messages from being loaded 2024年01月08日 19:54:44 +01:00
gradle/wrapper initial commit 2023年05月08日 15:52:44 +02:00
metadata/en-US changed readme, screenshots for fdroid 2023年12月14日 10:36:34 +01:00
screenshots GIFs, Replies, only load part of the messages, other cool stuff 2023年12月14日 01:24:20 +01:00
.gitignore added screenshots 2023年05月09日 15:15:30 +02:00
build.gradle Viele Updates 2023年05月19日 13:37:36 +02:00
gradle.properties initial commit 2023年05月08日 15:52:44 +02:00
gradlew initial commit 2023年05月08日 15:52:44 +02:00
gradlew.bat initial commit 2023年05月08日 15:52:44 +02:00
README.md changed readme, screenshots for fdroid 2023年12月14日 10:36:34 +01:00
settings.gradle initial commit 2023年05月08日 15:52:44 +02:00

Mycelium Messenger

Very anonymous, end to end encrypted chat(sh)rooms

E2EE chatrooms? Are you retarded?

In Mycelium there is no user information of any kind.

It may be a bit silly to call something a chatroom, a public space, and then End-to-End encrypt it but it was my best guess on how to connect users without knowing the users exist. Technically, anyone can join any room if they guess the UUID but without the keys they are just seeing emacs keybindings

If you want to chat with someone you create a room and share the link including the secret keys needed for AES encryption, all packaged as a secret code. Neither the Server nor the other users know who wrote a message but if you wish you may set a username which will be shown above your messages. This, however, is completely optional as the main goal of the app is to keep everything as anonymous as possible. All the server knows is what room-UUID a message belongs to, what number of message it is and the heavily encrypted content it doesn't know how to decode.

Your groups messages are saved locally for quick loading in an AES encrypted database made with SQLCipher and the key to that database is encrypted with a generated key from the Android Keystore system. Dare I say, it's pretty safe?

Current State

What is happening

  • Any form of error handling
  • Show messages in RecyclerView instead of TextView
  • Right-align your own messages
  • Remember nickname per group
  • Save messages locally ( AES encrypted database, don't worry )
  • Notifications while in-app
  • Make message-text copy-able
  • avoid double-messages
  • QR Code for sharing your secret code ( to avoid third party )
  • Image support
  • Set room pictures
  • Change server
  • Notification Service
  • Press images for full-screen view
  • Download images
  • Start on boot
  • Less aggressive compression
  • Only save the last 40 messages on the server, you can still have older ones locally
  • Vastly improve serverside code ( maybe not "vastly" but it is a little better now )
  • Message dots for room-list
  • Share images and text into app
  • Animated splash-screen
  • Make separate english and german options, not some weird mix
  • Only load the last X messages when opening a room, scroll up for more
  • GIF support
  • Replies
  • Delete messages locally
  • Share secret code over NFC ( pretty cool, huh? )
  • Info-View to explain the basics
  • Arbitrary Room Order ( it is last-changed right now or something like that )
  • Scaling for screens other than mine
  • Show something other than the UUID in the room list, maybe the last message
  • Markdown support ( at least the basics )
  • Light theme
  • Document the code
  • More mushroom puns
  • Sell out to some shady ad company

What is not happening ( for now )

  • Support for bigger filetypes ( I only have a 64GB SD Card in my raspberry pi )
  • More complex profiles/ unique usernames ( That would kinda defeat the purpose )

How to get it

I host my own F-Droid repo for it, you can add it to your sources in the settings:

https://krixec.hopto.org/fdroid/repo/

As there is no data collection whatsoever, please let me know if you encounter bugs, horrible design, have questions or suggestions.

You can either use this pages Issues or write me directly in the (sh)room in the QR-code at the bottom ;)

How to build

I've made it with Android Studio so you'll probably want to use that for compiling as well. The steps here would be Build -> Build Bundle(s)/ APK(s) -> Build APK(s)

It uses gradle for the builds so look into that direction if you want to stay in the terminal.

How to host your own server

I'll add better support for self-hosted servers soon, at the moment you probably only want rooms from one host.

You can grab the serverside files here

How to motivate me

You can tell me that I am a lazy schmuck and have to work on your suggestions here