How it Works
A core design principle of the samizdapp network is that box owners are the only ones that have control over their own data. However, at this stage, our focus is on establishing robust connectivity across diverse environments, and offer no guarantees as to privacy or anonymity
SamizdApp currently uses a lot of existing tech and piggybacks on existing protocols. This is an overview of everything that happens under the hood.
The Software
Pleroma
Our first app is a social media alternative called Pleroma with a custom frontend called Soapbox. Together, these provide a service reminiscent of twitter.
We chose this path as a way to easily demonstrate the potential of the SamizdApp network, but the principles and protocols in use could just as easily be applied to self-hosting next-cloud, urbit, atproto, or any other software that lends itself to a web based interface.
The Architecture
The SamizdApp network is partly a private libp2p network, and is part of the Yggdrasil Network.
Box <-> Box Communications
SamizdApp boxes are federated over the Yggdrasil Network.
When it boots up, your box will create a public Yggdrasil address for itself by opening up a UPnP port on your network's router. This will allow other boxes to connect to yours.
Your box will then access the Yggdrasil network by finding and connecting to another box with a public Yggdrasil address. Once connected to a public box, your box will now have access to the entire SamizdApp network through Yggdrasil.
The other box that you first connect to will now relay all of your traffic across the SamizdApp network. This could be a problem if that box goes down, but won't be as long as your box is able to find additional boxes with public Yggdrasil addresses.
By creating a public Yggdrasil address for itself (via the UPnP port that it opens on your router), your box makes itself available as a relay to other boxes on the SamizdApp network.
Client <-> Box Communications
Clients and boxes communicate with each other over a private libp2p network.
A client is a device (i.e. a phone or a laptop) that is paired to your box. You can pair a new client to your box by following the Getting Started docs, which will have you install the client app on your device.
Via LAN
Clients will initially be paired to your box over your LAN (or whatever network your device uses to connect to your box). Once your client is paired, the client app will be able to access your box over your LAN as long as it is connected.
Via the Internet
When it boots up, your box will create a public client address for itself by opening up a UPnP port on your network's router. This will allow clients to connect to your box.
Pending additional security, only your client can access the services on your box. If your client is connected to a public network (i.e. the internet), it will access your box via your box's public client address. However, if your box does not have a public client address, your client can still access your box by connecting to another box with a public client address. In this circumstance, the other box that your client connects to will relay all of the traffic between your client and your box.
By creating a a public client address for itself (via the UPnP port that it opens on your router), your box makes itself available as a relay to other clients on the SamizdApp network.