All Projects → functionland → borg

functionland / borg

Licence: MIT License
Client-server stack for Web3! Turn your Raspberry Pi to a BAS server in minutes and enjoy the freedom of decentralized Web with a superior user experience!

Programming Languages

typescript
32286 projects
HTML
75241 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to borg

Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+24416%)
Mutual labels:  ipfs, decentralized, libp2p
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (+12%)
Mutual labels:  ipfs, decentralized, filecoin
add-to-web3
⁂ Github Action to upload your website to web3.storage
Stars: ✭ 22 (-12%)
Mutual labels:  ipfs, web3, filecoin
superhighway84
USENET-inspired, uncensorable, decentralized internet discussion system running on IPFS & OrbitDB
Stars: ✭ 437 (+1648%)
Mutual labels:  ipfs, decentralized, web3
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 (+260%)
Mutual labels:  ipfs, decentralized, web3
Cyb Archeology
🌎 Personal immortal robot for the The Great Web
Stars: ✭ 117 (+368%)
Mutual labels:  ipfs, decentralized, web3
nft-website
NFT School: Community education platform for developers in the non-fungible token space.
Stars: ✭ 260 (+940%)
Mutual labels:  ipfs, web3, filecoin
trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (+1948%)
Mutual labels:  ipfs, decentralized, web3
web3.storage
⁂ The simple file storage service for IPFS & Filecoin
Stars: ✭ 417 (+1568%)
Mutual labels:  ipfs, libp2p, filecoin
nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (+288%)
Mutual labels:  ipfs, libp2p, filecoin
digital-copyright
Stamp your code with a trackable digital copyright
Stars: ✭ 17 (-32%)
Mutual labels:  web3, filecoin
typescript-eth-starter
🔌 Ethereum Dapp Basic Typescript Starter
Stars: ✭ 125 (+400%)
Mutual labels:  ipfs, web3
denarius
Denarius [$D] is a PoW/PoS Hybrid Cryptocurrency with Tribus a new PoW Hashing Algo built specifically for D, one of a kind hybrid masternodes called Fortuna Stakes, atomic swaps, staking, mining, IPFS, optional Native Tor and I2P, and much more!
Stars: ✭ 105 (+320%)
Mutual labels:  ipfs, decentralized
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+236%)
Mutual labels:  ipfs, decentralized
go-libp2p-tor-transport
🚧 WIP: tor transport for libp2p
Stars: ✭ 41 (+64%)
Mutual labels:  ipfs, libp2p
dtinyurl
Dcentralized url shortening service base on ipfs
Stars: ✭ 19 (-24%)
Mutual labels:  ipfs, decentralized
filecoin-box
Filecoin flavored Ganache Truffle box
Stars: ✭ 23 (-8%)
Mutual labels:  ipfs, filecoin
ipfs-blog
IPFS Blog & News
Stars: ✭ 31 (+24%)
Mutual labels:  ipfs, web3
advanced-react-native-boilerplate
[DEPRECATED] React Native boilerplate including react-navigation, redux, and sagas with example Textile management.
Stars: ✭ 20 (-20%)
Mutual labels:  ipfs, decentralized
go-ipfs-recovery
Data recovery for IPFS protocol.
Stars: ✭ 16 (-36%)
Mutual labels:  ipfs, libp2p

example workflow

box

Client-server stack for Web3

Intro blog

Flagship App: Photos

client-server resemblance

box server demo

Motivation

There are currently two ways to interact with Web3 storage solutions:

  1. Through a pinning service and a gateway: the advantage is that files are served through URLs, an app can then access the files with conventional methods, e.g. simply putting a picture in <img src="gateway.example.com/Qm...">. The disadvantage is that there is a subscription payment associated with pinning services. Also this is not really decentralized!
  2. Turn the device to a full IPFS node: this model works beautifully in Brave desktop browser as an example, and makes sense for laptop and PC since they normally have large HDDs. It's much harder on mobile devices, however, biggest hurdle is to have Apple on board with the idea of relaxing file system access in iOS! Even if all goes well, a mobile device is NOT a good candidate for hosting the future Web! They get lost easily and are resource constrained (battery, memory).

box aims to address these issues by creating a third alternative: Personal Server

A personal server is a commodity hardware (PC, Raspberry Pi, etc.) that's kept at home vs. in pocket. It helps with actual decentralization, also saves money since people pay once for HDDs and own them forever, no monthly charge! From privacy perspective, it guarantees that data doesn't leave the premise unless user specifically wants to (e.g. sharing).

To achieve this, we are developing protocols to accommodate client-server programming with minimal effort on developer's side:

  • File Protocol: Send and receive files in a browser or an app (stage: prototype)
  • Data Protocol: Database interface over at client-side; facilitates describing linked JSON documents and having them saved/retrieved (stage: design draft)
  • AI Protocol: Map-Reduce stack for distributed processing (stage: ideation)

Architecture

box architecture

An app talks with the server(s) by invoking APIs from @functionland/fula library. The Fula library abstracts away the protocols and libp2p connection, instead exposes APIs similar to MongoDB for data persistence and S3 for file storage.

On the server side, data or file will be saved on a private IPFS instance. There is also a public IPFS instance which comes to play in sharing: when the end user requests to share some data, an encrypted copy will be saved on the public IPFS network, anyone with whom the key has been shared can access the data.

The box stack can provide backup guarantees by having the data pinned on multiple servers owned by the user. However, in cases that the user needs absolute assurance on data longevity, e.g. password records in a password manager app or scans of sensitive documents, the encrypted data can be sent over at Filecoin blockchain.

Packages

Name Description
protocols Libp2p protocols for the box stack
server Reference server implementation in Node.js
fula Client library for using the protocols from browser
rn-fula Client library ported for react native

Examples

Name Description
react Example of using fula client and box server
react-native Example of using fula client in react-native and box server

Development

To get started in development with this monorepo use the following steps.

Prerequisites

Local development on host OS

  1. Install & Build deps
  $ rush update && rush build
  1. Run box app.
  $ cd apps/box && rushx start
  1. Run demo apps
  $ cd examples/react-cra && rushx start
  $ cd examples/react-do-app && rushx start

Local development in docker container

  $ docker-compose -f docker-compose.dev.yaml up

Run the demo apps

Open a browser and navigate to http://localhost:3000 and http://localhost:3001

License

MIT

Related Publications and News

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].