4.8 KiB
nextgraph-rs
Rust implementation of NextGraph
This repository is in active development at https://git.nextgraph.org/NextGraph/nextgraph-rs, a Gitea instance. For bug reports, issues, merge requests, and in order to join the dev team, please visit the link above and create an account (you can do so with a github account). The github repo is just a read-only mirror that does not accept issues.
NextGraph
NextGraph brings about the convergence between P2P and Semantic Web technologies, towards a decentralized, secure and privacy-preserving cloud, based on CRDTs.
This open source ecosystem provides solutions for end-users and software developers alike, wishing to use or create decentralized apps featuring: live collaboration on rich-text documents, peer to peer communication with end-to-end encryption, offline-first, local-first, portable and interoperable data, total ownership of data and software, security and privacy. Centered on repositories containing semantic data (RDF), rich text, and structured data formats like JSON, synced between peers belonging to permissioned groups of users, it offers strong eventual consistency, thanks to the use of CRDTs. Documents can be linked together, signed, shared securely, queried using the SPARQL language and organized into sites and containers.
More info here https://nextgraph.org
Support
Documentation can be found here https://docs.nextgraph.org
And our community forum where you can ask questions is here https://forum.nextgraph.org
How to use NextGraph
NextGraph is not ready yet. You can subscribe to our newsletter to get updates, and support us with a donation.
For developers
Read our getting started guide.
For contributors
- Install Rust minimum required 1.64.0
- Install Nodejs
cargo install wasm-pack
// optionally, if you want a Rust REPL: cargo install evcxr_repl
git clone git@git.nextgraph.org:NextGraph/nextgraph-rs.git
cd nextgraph-rs
cargo build
Packages
The crates are organized as follow :
- p2p-repo : all the common types, traits and structs for the P2P repositories
- p2p-net : all the common types, traits and structs for the P2P networks
- p2p-broker : the broker code (as server and core peer)
- p2p-client : the client connecting to a broker, used by the apps and verifier
- p2p-stores-lmdb : lmdb backed stores for the p2p layer
- p2p-verifier : the code of the verifier
- ngcli : CLI tool to manipulate the repos
- ngd : binary executable of the daemon (that can run a broker, verifier and/or Rust services)
- ng-app-js : contains the JS SDK, the web app, react app, and some node services
Run
Build & run executables:
// runs the daemon
cargo run --bin ngd
// runs the client
cargo run --bin ngcli
For the web apps, see the README
Test
Test all:
cargo test --all --verbose -- --nocapture
Test a single module:
cargo test --package p2p-repo --lib -- branch::test --nocapture
Test end-to-end client and server:
cargo test --package ngcli -- --nocapture
Test WASM websocket
cd ng-app-js
wasm-pack test --chrome --headless
Test Rust websocket
cargo test --package p2p-client-ws --lib -- --nocapture
Build release binaries
cargo build -r
you can then find the binaries ngcli
and ngd
in target/release
Generate documentation
Generate documentation for all packages without their dependencies:
cargo doc --no-deps
The generated documentation can be found in target/doc/<crate-name>
.
Contributions license
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as below, without any additional terms or conditions.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
SPDX-License-Identifier: Apache-2.0 OR MIT
NextGraph received funding through the NGI Assure Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 957073.