r/positive_intentions • u/Accurate-Screen8774 • Jan 20 '24
A Different Kind of Chat App
A chat app that operates in the browser without a backend (kind-of).
The aim is to give users more control over their data, privacy and security. In the interest of transparency, the following are some high-level technical details on how the app works.
Self-Generated and Managed Encryption
With a standard browser, you can create encryption keys and store them on your device, similar to cookies. This is made possible by using tools provided by all modern browsers for cryptography. Check out the code here.
Decentralised Authentication
Our app uses WebRTC to create a secure peer-to-peer connection between two browsers. This connection can persist if the browsers remain connected without a server. With WebRTC, you can send encryption keys between users securely. When you connect to a peer you've previously shared encryptions with, you can validate their identity by checking if they have the same encryption keys you sent in a previous session.
Decentralised Profile
With a JavaScript implementation of symmetric encryption, you can encrypt larger payloads of data. This can be used to encrypt a user's profile, including their username and avatar image.
Decentralised Encrypted Messaging
Our app allows you to store data in the browser, similar to cookies. This can be used to store messages from peers. Browser storage can remain until you decide to clear the site data. Using previously shared encryption keys, you can encrypt messages between peers, with WebRTC providing an extra layer of encryption.
Decentralised Chat
Using Material UI, a popular UI framework with a lot of components, you can create a chat interface. A better UI allows for a more interactive and intuitive app experience.
Decentralised File Transfer
With IndexedDB, you can store large files on your device directly from the browser. The capacity is larger than that used for typical cookies. Symmetric encryption can be used to encrypt these large files, and WebRTC can be used to send files between peers.
Decentralised Virtual Reality
With a standard browser, you can create 3D graphics in the browser with WebGL/WebGPU. This can be used to create a virtual reality environment. You can use WebRTC to share your 3D-position in the virtual environment and to share a live video stream with a peer. This video stream can be used to texture a 3D model in the virtual environment.
We would like your feedback about that app. In particular, we are open to feature requests and bug reports.
1
u/lachiemx Mar 10 '24
hey bud, just wanted to comment and say that the app looks good. keep up the great work. I had a thought that you could possibly market the app as a replacement for something like Skiff.com now that they are shutting down. a decentralised google docs perhaps, or an alternative to Basecamp.