b64.space is an attempt to build a decentralized, public microblogging platform (think Twitter or Tumblr)
Every user is fully in control of its data. Even though everything is public, b64 acts as a facilitator so users can find each other and send messages. The actual content is always stored under each user's namespace, and protected by their keys.
You can always post new content, even if you're offline. Once the connection is restored, data should sync.
- Gun DB
- SQLite (via absurd-sql and sql.js)
- React and React MUI
b64.space makes extensive use of what I like to call "namespaces". A namespace is created when you use gun.user()
In Gun, this is a convenience wrapper around the flow of signing and verifying the data you're storing using certain key pair. This means that, effectively, this namespace is a portion of the graph that can only be controlled by the person in control of this key pair. Everything stored inside this namespace is write protected and signed. This means autorship can be verified at any given point in time. Every profile in b64.space corresponds to a single namespace.
Gun enables a very interesting patter we usually call "Inbox pattern". This makes use of
The main b64 global graph acts as a relay: every user has an inbox that other users can write to. This means
- Key based Auth (using GUN.sea keys)
- Create posts
- Public Profiles
- Like posts
- Local indexing via SQLite
- Follow users
- Add followers
- Comment posts (one level)
- Reply to post (multi level)
- Add media (images/videos, explore Pinata, SIA, base64, WebTorrent)
- E2EE 1-1 direct messages (explore iris)
- E2EE group chats (explore iris)