All Projects → appaquet → exocore

appaquet / exocore

Licence: Apache-2.0 license
A distributed private application framework

Programming Languages

rust
11053 projects
swift
15916 projects
typescript
32286 projects
shell
77523 projects
Cap'n Proto
48 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to exocore

Yii2 Usuario
Highly customizable and extensible user management, authentication, and authorization Yii2 extension
Stars: ✭ 251 (+402%)
Mutual labels:  backend
pinecone
Peer-to-peer overlay routing for the Matrix ecosystem
Stars: ✭ 361 (+622%)
Mutual labels:  peer-to-peer
nextjs-boilerplate
Jam3 NextJS Generator for SPA, SSG, SSR and JAMStack applications
Stars: ✭ 95 (+90%)
Mutual labels:  backend
Http Fake Backend
Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.
Stars: ✭ 253 (+406%)
Mutual labels:  backend
haskell-ricochet
(WIP/Experimental) Ricochet implementation as Haskell Library.
Stars: ✭ 22 (-56%)
Mutual labels:  peer-to-peer
tool-db
A peer-to-peer decentralized database
Stars: ✭ 15 (-70%)
Mutual labels:  peer-to-peer
Free Programming Resources
💎 免费的编程资源大全,持续更新!🔥 覆盖各种语言和方向(Java \ Python \ C++ \ JavaScript \ Golang \ 前端 \ 后端等)的学习路线、贴心教程、项目实战、编程书籍、面试合集、实用资源等,对程序员非常有帮助!
Stars: ✭ 225 (+350%)
Mutual labels:  backend
conceal-desktop
Conceal Desktop (GUI)
Stars: ✭ 65 (+30%)
Mutual labels:  peer-to-peer
jiber
Open Source API for Realtime Web Apps
Stars: ✭ 53 (+6%)
Mutual labels:  peer-to-peer
dctk
Direct Connect client library (ADC and NMDC) for the Go programming language
Stars: ✭ 15 (-70%)
Mutual labels:  peer-to-peer
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (-56%)
Mutual labels:  peer-to-peer
trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (+924%)
Mutual labels:  peer-to-peer
geesome-node
🦈 Your self-hosted decentralized Messenger, Social network, Media file storage on top of IPFS! Freely communicate in encrypted chat groups, share images, video, text or any data without a risk of censorship or blocking.
Stars: ✭ 90 (+80%)
Mutual labels:  peer-to-peer
I18next Xhr Backend
[deprecated] can be replaced with i18next-http-backend
Stars: ✭ 252 (+404%)
Mutual labels:  backend
oh-my-backend
Что нужно знать бэкенд-разработчику web-приложений. Backend Roadmap (from Junior to Senior).
Stars: ✭ 657 (+1214%)
Mutual labels:  backend
Three Layer
3️⃣ 🍰 Architecture of the Haskell web applications
Stars: ✭ 246 (+392%)
Mutual labels:  backend
network
Monorepo containing all the main components of Streamr Network.
Stars: ✭ 522 (+944%)
Mutual labels:  peer-to-peer
front-end
定位为非前端开发同学,科普前端
Stars: ✭ 33 (-34%)
Mutual labels:  backend
p2p-project
A peer-to-peer networking framework to work across languages
Stars: ✭ 68 (+36%)
Mutual labels:  peer-to-peer
orbit-db-cli
CLI for orbit-db
Stars: ✭ 60 (+20%)
Mutual labels:  peer-to-peer

Exocore

codecov Build

Warning: Exocore is at a very early development stage, hence incomplete, unstable, and probably totally unsafe. Use at your own risk.

Exocore is a distributed applications framework with private and encrypted data storage. Think of it as an infrastructure that allows a user to own his own personal cloud that is extensible via WebAssembly applications and accessible via Web/Mobile/Backend SDKs. It is designed to be resilient to failures and will eventually allow offline usage (ex: on mobile).

Exocore is primarily built for Exomind, a personal knowledge management tool built in parallel to this project. Exocore is the application framework for Exomind.

The primary concept in Exocore is a Cell, which is a unique container for a user's applications and data.

A cell consists of:

  • Chain nodes manage replication and storage by using a blockchain data structure.
  • Store nodes manage indexation, querying, and mutation of the data (collocated with chain node).
  • Application host nodes run applications written in WebAssembly (collocated with store nodes)

Roadmap

v0.1 (in progress)

  • Chain storage and replication: Proof of concept
  • Transport: Proof of concept
  • Entity store: Proof of concept
  • Applications (WASM host): Proof of concept

v0.2

  • Cell management (Configuration replication)
  • Enhanced security (Chain encryption, configuration signatures, etc.)

v0.3 and beyond

  • Android SDK
  • Blob storage (IPFS)
  • Offline support

Dependencies

  • Build dependencies

    • On MacOS: Install Xcode and command lines tools
    • On Ubuntu: apt install build-essential pkg-config libssl-dev
  • Rust

    • Install using rustup
    • Install clippy and rustfmt: rustup component add clippy rustfmt
  • Cap'n Proto

    • On MacOS: brew install capnp
    • On Ubuntu: apt install capnproto
  • Protobuf

    • On MacOS: brew install protobuf swift-protobuf
    • On Ubuntu: apt install protobuf-compiler

Usage & configuration

  • CLI:

    • ./tools/install.sh or cd exo && cargo install --path . or grab latest released binary.
  • Configuration

    • Most commands require a node configuration file, for which an example can be found here: [./examples/node.yaml]. exo can also generate and manage configurations. See Quick start.
    • At a minimum, the config requires 2 keypairs: one for the node, one for the cell.
    • The node keypair is unique per node, while the cell keypair is shared among servers that host the cell.
    • See Quick start section for example 2 nodes setup.

Quick start

Create a Cell hosted on 2 nodes

  • On node 1

    • Generate configuration:

      exo --dir ./node1 node init --name node1

    • Edit configuration to include unique and accessible addresses:

      exo -d ./node1 config edit

    • Generate a cell:

      exo -d ./node1 cell init --name my_cell

  • On node 2

    • Generate configuration:

      exo --dir ./node2 node init --name node1

    • Edit configuration to include unique and accessible addresses. If both nodes are running on the same machine, make sure they have unique ports.

      exo -d ./node2 config edit

    • Request to join the cell as a chain and store node. This will use exocore's discovery server (disco.exocore.io) to exchange configurations:

      exo -d ./node2 cell join --chain --store

      and copy the displayed discovery PIN.

  • On node 1:

    • Add node 2 to cell:

      exo -d ./node1 cell node add

      Paste node 2's discovery PIN and accept its join request.

  • Start both nodes:

    • Node 1: exo -d ./node1 daemon
    • Node 2: exo -d ./node2 daemon

Join the example web client

Install & run Exomind

Clients

Web

C

iOS

Documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].