{"id":15149848,"url":"https://github.com/privapps/mqtt-chat","last_synced_at":"2025-08-22T18:31:48.641Z","repository":{"id":231268065,"uuid":"781318137","full_name":"privapps/mqtt-chat","owner":"privapps","description":"An end-to-end encrypted web group chat that uses MQTT as backend","archived":false,"fork":false,"pushed_at":"2024-04-03T14:43:19.000Z","size":17,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-02T11:03:47.222Z","etag":null,"topics":["chat","communication","encryption-decryption","end-to-end-encryption","groupchat","javascript","mqtt","mqtt-broker","mqtt-channels","mqtt-chat","mqtt-protocol","mqttchat","pubsub","pubsubclient","single-page-app","webapp","websocket"],"latest_commit_sha":null,"homepage":"https://privapps.github.io/mqtt-chat/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/privapps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-04-03T06:46:14.000Z","updated_at":"2024-10-20T09:56:41.000Z","dependencies_parsed_at":"2024-04-03T07:46:50.606Z","dependency_job_id":"08e8c375-ba79-4f0e-8a17-f2a61424a41a","html_url":"https://github.com/privapps/mqtt-chat","commit_stats":null,"previous_names":["privapps/mqtt-chat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/privapps%2Fmqtt-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/privapps%2Fmqtt-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/privapps%2Fmqtt-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/privapps%2Fmqtt-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/privapps","download_url":"https://codeload.github.com/privapps/mqtt-chat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230624540,"owners_count":18255330,"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":["chat","communication","encryption-decryption","end-to-end-encryption","groupchat","javascript","mqtt","mqtt-broker","mqtt-channels","mqtt-chat","mqtt-protocol","mqttchat","pubsub","pubsubclient","single-page-app","webapp","websocket"],"created_at":"2024-09-26T14:01:15.082Z","updated_at":"2024-12-20T17:47:12.891Z","avatar_url":"https://github.com/privapps.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Ad hoc E2E Encrypted Group Chat\n\n### What\nThis project is a fully functional, minimalist, ad hoc, end-to-end encrypted web group chat. It uses MQTT as backend for all message delivery which is more reliable than WebRTC.\n\n### Why\nAfter concluding the [Go group chat](https://github.com/privapps/gchat/), I am now seeking a more standardized backend solution, moving away from self-invented protocols. One such option is the Simple (or Streaming) Text Orientated Messaging Protocol (STOMP). Additionally, MQTT, with its support for WebSockets, presents another viable alternative. My interest is piqued particularly by MQTT's availability of free public servers, making it a natural choice for exploration.\n\n### How\nThe backend is replaced with free public MQTT Server which supports websocket.\n\nOn the client side, I did minimum changes which is similar as my [go group chat](https://github.com/privapps/gchat/). It uses plain javascript without any framework.\n\n### Note\nDue to MQTT's design catering to high-latency and unreliable networks, if your chat agent becomes disconnected, your mobile screen turns off for example, upon reconnection, the server seamlessly **replays** any missed messages. This feature proves invaluable, ensuring uninterrupted communication flow. By the way, you can try this with public mqtt emqx broker.\n\n### Demo\nA live demo is at https://privapps.github.io/mqtt-chat/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprivapps%2Fmqtt-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprivapps%2Fmqtt-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprivapps%2Fmqtt-chat/lists"}