{"id":15150115,"url":"https://github.com/hpn4/hmessager","last_synced_at":"2025-07-13T04:33:36.091Z","repository":{"id":187739570,"uuid":"677485678","full_name":"Hpn4/HMessager","owner":"Hpn4","description":"HMessager is a Android decentralized messaging app providing end-to-end encryption based on the Signal Protocol and built with Jetpack Compose","archived":false,"fork":false,"pushed_at":"2024-04-22T21:18:29.000Z","size":574,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-31T00:12:57.656Z","etag":null,"topics":["android","double-ratchet-algorithm","end-to-end-encryption","jetpack-compose","signal-protocol","x3dh"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hpn4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-08-11T17:34:52.000Z","updated_at":"2024-10-21T13:22:05.000Z","dependencies_parsed_at":"2024-04-20T15:50:53.288Z","dependency_job_id":null,"html_url":"https://github.com/Hpn4/HMessager","commit_stats":null,"previous_names":["hpn4/hmessager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hpn4%2FHMessager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hpn4%2FHMessager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hpn4%2FHMessager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hpn4%2FHMessager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hpn4","download_url":"https://codeload.github.com/Hpn4/HMessager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237918710,"owners_count":19387305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","double-ratchet-algorithm","end-to-end-encryption","jetpack-compose","signal-protocol","x3dh"],"created_at":"2024-09-26T14:01:59.541Z","updated_at":"2025-02-09T07:31:32.241Z","avatar_url":"https://github.com/Hpn4.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HMessager\n\nHMessager is a decentralized messaging app for Android based on the [Signal Protocol](https://signal.org/docs/) and build with [Jetpack Compose](https://developer.android.com/jetpack/compose).\n\nThis project is under development and not ready for use.\n\n## Server\n\nTo setup a server you just have to run the script `server.py` located in the `server` folder.\nYou can run it on a public IP or in a private network and then do port-forwarding.\n\nThe code is pretty straightforward, it's just a simple Websocket server that listen for connections and then forward the messages to clients based on hashed identity if they are connected or store message locally if not.\n\nThen in HMessager, go to the settings screen and enter the IP and port of your server.\n\n\u003cimg alt=\"setting screen\" src=\"images/settingsScreen.png\" width=\"300\"/\u003e\n\n---\n\n## Create conversation\n\nTo create a conversation with someone, you have to scan his QR code and he must scan yours.\n\n1. Click on the message icon in the bottom right corner of the home screen\n2. Click on the scan button to scan the QR code of the person you want to chat with\n3. Then click on the code button to show your QR code to the other person\n4. The other person must scan your QR code\n5. You can now create the conversation\n\n\u003cimg alt=\"scan screen\" src=\"images/newConvScreen.png\" width=\"300\"/\u003e\n\n---\n\n## Security\n\nThe [X3DH](https://signal.org/docs/specifications/x3dh/) and the [double ratchet algorithm](https://signal.org/docs/specifications/doubleratchet/) are used to provide end-to-end encryption.\n\n### Data storage\n\nAll your conversations, settings, keys and messages (including medias) are stored in the files storage of the app inaccessible to other apps and you.\nTheir are also encrypted with different keys derived from a password that you have to enter when you open the app.\n\nThe first time you open the app, you need to choose your password, this password will then be used to derive a master key.\nIf you forget your password, you will lose all your data and it's impossible to recover them so be aware of that.\n\n\u003cimg alt=\"password screen\" src=\"images/firstLaunchScreen.png\" width=\"300\"/\u003e\n\n### Algorithms used\n\n- SHA3-512 and SHA3-256 for hashing\n- X3DH with Curve25519 for key agreement\n- HKDF with SHA3-512 for key derivation\n- AES-256 for encryption\n- Ed25519 for signatures\n- HMAC with SHA3-512 for message authentication\n\n---\n\n## Features\n\n- [x] End-to-end encryption with a double ratchet algorithm\n- [x] Send and receive text messages\n- [x] Send and receive emojis only messages (big emojis)\n- [x] Send and receive images and videos\n- [x] Send and receive audio messages (with waveform)\n- [x] Send and receive files\n- [x] Choose images/video from gallery\n- [x] Choose files/audio from file explorer\n- [x] Take pictures/video with camera\n- [x] Record audio with microphone\n\nCurrently group conversations are not supported, it's only possible to chat with one person at a time.\n\n## Screenshots\n\nHere an exemple of a conversation with the app.\n\n\u003cimg alt=\"home screen\" src=\"images/convScreen.png\" width=\"300\"/\u003e\n\n---\n\n## TODO\n\n- [ ] Add support to reply to a message (quote)\n- [ ] Add support for message reactions (emojis)\n- [ ] Add support for message deletion\n- [ ] Add support for text style in message (bold, italic, code, puce list, header...)\n- [ ] Add support for link preview\n- [ ] Group medias together (images and videos in a single message)\n- [ ] Add multiple themes","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpn4%2Fhmessager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhpn4%2Fhmessager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpn4%2Fhmessager/lists"}