🚧 Alpha level software. The docs are a bit rough, but will give you an outline of the vision. Raise an issue if you run into troubles.
The core Rust libraries and front-end examples for the PeerPiper project. Mainly holds the peer-to-peer networking logic, the core data structures, and how to use them.
The idea is to put all the reusable code in this repo so it can be linked and tested in its entirety.
PeerPiper is an contacts network based on the PeerWise Protocol
that allows you to share data with others in a peer-to-peer fashion. It's a bit like a social network, but you own your data and can share it with others in a more granular way.
- No blockchain required
- Default Peer-to-peer networking via rust-libp2p
- Modular, Composable Wallet (add your own plugins) via Wasm Components
- Plaintext Peer discovery (name, email, phone, etc.) via Delanocreds
- 🚧 Modular, Composable, Templatable app & data sharing
- 🚧 Add your own publishing network (Nostr, Farcaster, AT Protocol, etc.)
The browser needs a node to connect to the network. The good news is that you can run your own node on your own desktop, or trustlessly use someone else's.
This is true even if you use PeerPiper between two browsers, because the server in between connects the browsers together at first.
The core library should include wrappers so that it can be deployed to various infrastructure providers:
- Browser via WebAssembly, Vite &
wasm-bindgen
- Command Line via Rust
- 🚧 Tauri home, mobile, and desktop (via peerpiper-desktop)
- Shuttle via Rust
- Fly.io via Docker
- Cloudflare Workers via WebAssembly
- VPS via Rust
- Web3.storage via HTTP
- Fireproof DB via HTTP
You'll need a few dependencies to get started:
🦀 Rust
- Rust 1.80+ (uses nightly stipulated in the [
rust-toolchain.toml
](./rust-toolchain.toml - Add
wasm32-wasip1
target:rustup target add wasm32-wasip1
- Add
wasm32-unknown-unknown
target:rustup target add wasm32-unknown-unknown
Using binstall
: cargo binstall cargo-component@0.13.2
Note that cargo-component
is a work in progress and may not be stable. Configs, settings, and commands may change from version to version.
⚖️ Just
- Just makes running batch commands easier. There's a
justfile
in the root of the project.
Many of the commands used in development are in the justfile
. You can see them by running just
.