11 releases (6 breaking)
0.8.0 | Jun 26, 2024 |
---|---|
0.7.1 | Jan 26, 2024 |
0.7.0 | Nov 19, 2023 |
0.4.0 | Sep 7, 2022 |
0.1.0 | Oct 25, 2021 |
#74 in HTTP server
23 downloads per month
1MB
25K
SLoC
aquadoggo
Docs | Releases | Contributing | Website
aquadoggo
is a reference node implementation for p2panda. It is a intended as a tool for making the design and build of local-first, collaborative p2p applications as simple as possible, and hopefully even a little fun!
aquadoggo
can run both on your own device for local-first applications, or on a public server when acting as shared community infrastructure. Nodes like aquadoggo
perform a number of tasks ranging from core p2panda data replication and validation, aiding the discovery and establishment of connections between edge peers, and exposing a developer friendly API used for building applications.
📖 Read more about nodes in our learn section
🐬 Visit the main repo README for more general info
Features
- Awaits signed operations from clients via GraphQL.
- Verifies the consistency, format and signature of operations and rejects invalid ones.
- Stores operations of the network in an SQL database of your choice (SQLite, PostgreSQL).
- Materializes views on top of the known data.
- Answers filtered, sorted and paginated data queries via GraphQL.
- Discovers other nodes in local network and internet.
- Establishes peer-to-peer connections via UDP holepunching or via relays.
- Replicates data efficiently with other nodes.
Installation
For using aquadoggo
in your Rust project, you can add it as a dependency with the following command:
cargo add aquadoggo
Example
Run the node directly next to the frontend you're building for full peer-to-peer applications. Check out our Tauri example for writing a desktop app.
use aquadoggo::{Configuration, Node};
use p2panda_rs::identity::KeyPair;
let config = Configuration::default();
let key_pair = KeyPair::new();
let node = Node::start(key_pair, config).await;
FFI bindings
If you are not working with Rust you can create FFI bindings from the aquadoggo
crate into your preferred programming language. Dealing with FFI bindings can be a bit cumbersome and we do not have much prepared for you (yet), but check out our Meli Android project as an example on how we dealt with FFI bindings for Dart / Flutter.
Command line application
Check out our Releases section where we publish binaries for Linux, RaspberryPi, MacOS and Windows.
Development
The Protocol Buffers compiler must be installed in order to compile aquadoggo.
On a Debian-based OS run:
$ sudo apt install -y protobuf-compiler
See the installation documentation for more options.
License
GNU Affero General Public License v3.0 AGPL-3.0-or-later
Supported by
This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528 and NGI-ASSURE No 957073
Dependencies
~65–100MB
~2M SLoC