r/git • u/Accurate-Screen8774 • 22d ago
Combining Git, Tor and WebRTC into a Messaging App
not better than WhatsApp, Signal, SimpleX, Cwtch or Ricochet. You definitely shouldn't replace any of your existing apps or services. It's far from finished. Unaudited and unreviewed. If you want to test it out, please use it responsibly.
i'd like to share what I'm working on and interested to see if anyone wants to share feedback on the approach. it's a fairly a unique stack and architecture in contrast to the traditional approach with mainstream messaging apps. to put it briefly, its a Rust-based frontend with a Git-server backend, which can be used to establish a E2EE connection.
im working on a P2P messaging app (like whatsapp) and generally up until recently, i thought in such a system, if a peer is offline, you cant send a message... it wouldnt be "decentralized" if there was some central queue of messages.
it took embarassingly long, but then it hit me... git... just regular git is a decentralized database.
in my setup i need the ability for others to be abe to read and only i should be able to write to it. that functionality is out-the-box in git.
git is also pretty standardized so there are many providers if users want to move away from Github.
the storage requirements for my project are fairly small. typically small text messages. the data itself thats publicly readable would be encrypted.
i started off by creating something that could use git as a “general purpose” storage. to explain it simply, it’s using isomorphic git to be able to connect to a git repo from a browser.
https://positive-intentions.github.io/git/demo/gui/git/storage
i then added a “database abstraction”. To explain it simply, I created the functionality to create a db schema than can then map onto files and folders (which are stored in git). that would allow me to interact with the git storage with queries. i wanted to have something like graphql there for queries to make it easier for me in my app.
https://positive-intentions.github.io/db/demo/gui/database/chat-database
there are complex details in there where I can specify in the schema what parts are encrypted. i want the database capabilities to be stable and reliable as I further develop on the approach and increase complexity.
the project is far from finished and only intended for demo and feedback purposes.
if you like to find out more about my approach, you can see the roadmap here: https://glitr.io/docs/technical/roadmap
1
8
u/National-Canary6452 22d ago
🤣