/emberclear

Encrypted Chat. No History. No Logs. https://gitlab.com/NullVoxPopuli/emberclear

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

pipeline status Build Status coverage report Maintainability bundle analysis Crowdin

An implementation of the mesh-chat protocol.

emberclear is published at: https://emberclear.io and can be run locally with docker via

docker run -d -p 4201:80 nullvoxpopuli/emberclear

and then can be visited at http://localhost:4201.

Another Chat App?

Yes, there is a lack of trust that manifests when existing chat apps are closed source and centralized. Emberclear, by design, is trustless -- meaning that, while there is a server component, the server knows nothing more than your "public key". The server(s) are also meant to be a hot-swappable member of a mesh network, so no one implementation matters, as long as the same protcol is used.

Here is a table of detailing out some differences between emberclear and other chat apps:

Development

Note: the frontend code is in packages/frontend. This is to separate the over-arching repo files from the individual project(s).

git submodule update --init --recursive
./run yarn start:dev

Question: should the relay finally become part of the same project?

Written in ember for demonstration of

  • progressive web apps
  • service workers
  • websockets
  • typescript
  • all the modern features / best practices of ember

TODO:

  • implement WebRTC for messaging/audio/video and use websockets as a fallback
    • ensure that WebRTC messages can be manually encrypted (otherwise, it's not worth it)
  • websocket via WebWorker for disconnecting the UI App from the data management so that the UI App can update independently from the WebWorker Socket Connection
  • WASM / ASM.js Renderer

Debugging

Module Resolution:

// shows all detected services
Object.keys(window.requirejs.entries).filter(b => b.includes("service"))

File Watch Problems?

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

License

GNU General Public License version 3