A minimalist distributed Web communications framework, meet the content you want.
- Give all the possible control to the user, and good defaults
- User owns her data
- User owns her connections
- Give the user real value following good design principles (http://www.timewellspent.io/)
- Bring the user ideas to life
- Written in Typescript
- WebRTC and WebAssembly based
- As a blog / microblog
- As a knowledge base
- As a common chat
- As a CMS
- As a corporative chat
- As a CRM
Completed:
- Users can join the server with an id
- Users can connect to other users via id
- Users can send messages between them when connected
Design
- Minimal
- Atomic
Each node should have:
- Content index
- People index
- Followers index
Example:
contentIdx = {
'contentId': { author: '', timestamp: '', type: '', keywords: [], value: '' },
}
peopleIdx = {
'peopleId': { followersIdx: { token: '' } },
}
Concepts:
- Content is indexed in contentIdx
- Direct replication: Node replicate their content based on permissions of followersIdx of itself
- Indirect replication: Node replicate third party content based on follower permissions of the author in the followersIdx of peopleIdx
Use ssb-keys library for that
The design goal is to have one server per user
Responsabilities:
- Peaple Lookup
- Signaling
- Replicate resources directly to friends
- Secure Authentication via signed message
- Implement direct replication
- Implement indirect replication
- Wifi automatic replication
- Implement Persistent Nodes
- Implement Cryptography in Web via WebAssembly
- Automatic Node Protocol Verification: Nodes that are corrupted are isolated