An open API service indexing awesome lists of open source software.

https://github.com/dao-xyz/peerbit

P2P database framework with encryption, sharding and search
https://github.com/dao-xyz/peerbit

database distributed e2ee libp2p orbitdb peer-to-peer

Last synced: 27 days ago
JSON representation

P2P database framework with encryption, sharding and search

Awesome Lists containing this project

README

          




Peerbit icon Icon



Peerbit


Develop for a distributed web with Peerbit

E2EE     P2P     Auto-sharding     Searchable


Documentation - Examples - Chat on Matrix

## A building block for the decentralized web

Peerbit is as easy-to-use as Firebase and provide P2P functionality like OrbitDB or GunJS yet with performance for data-intensive applications like live-streaming and cloud-gaming. It’s built on top of Libp2p (and works with IPFS) supporting encryption, sharding and discoverability (searching).

Your database schema can remain very simple but still utilize P2P networks, auto-scaling, E2E-encryption, discoverability and all other features you’d expect from a database.

## Optimized for performance

Peerbit is performant, so performant in fact you can use it for [streaming video](https://stream.dao.xyz) by having peers subscribing to database updates. In a low latency setting, you can achieve around 1000 replications a second and have a thoughput of 100 MB/s.

![Dogestream](/docs/videostream.gif)

## Other examples

### [Chat room](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/one-chat-room/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/one-chat-room/)

### [Lobby + chat rooms](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/many-chat-rooms/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/many-chat-rooms/)

## [Blog platform](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/blog-platform/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/blog-platform/)

### [Sync files](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/file-share/)

#### [React app](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/file-share/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/file-share/)

#### [CLI](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/file-share/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/file-share/)

### [Collaborative machine learning](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/collaborative-learning/)

[](https://github.com/dao-xyz/peerbit-examples/tree/master/packages/collaborative-learning/)

## Get Started

1. Install Peerbit by following the simple setup instructions in our [Installation Guide](https://peerbit.org/#/getting-started).

2. Dive into our comprehensive [Documentation](https://peerbit.org/#/modules/client/) or checkout the [Example repository](https://github.com/dao-xyz/peerbit-examples) to explore the powerful features and learn how to leverage Peerbit to its fullest potential.

3. Join us on [Matrix](https://matrix.to/#/#peerbit:matrix.org) to connect, share ideas, and collaborate with like-minded individuals.

## Contribute

Peerbit is an open-source project, and we welcome contributions from developers like you! Feel free to contribute code, report issues, and submit feature requests. Together, let's shape the future of Peerbit.

IMPORTANT: Peerbit uses pnpm.

1. Check pnpm version: `pnpm -v` should print something
2. Install: `pnpm install`
3. Build: `pnpm run build`
4. Run tests: `pnpm run test` in root or in a specific subpackage

You might possibly need to CMD + Shift + P and then enter to restart the typescript server after the build step.

### Local coverage report (Codecov-style)

To generate a local, navigable HTML report with the same remapped source paths used for Codecov uploads:

1. (Optional) clear old coverage artifacts:
`find . -type d -name .coverage -prune -exec rm -rf {} + && rm -rf .nyc_output coverage`
2. Rebuild workspace packages (refreshes generated `dist` type artifacts):
`pnpm run build`
3. Run the CI coverage shards you want to include:
`pnpm run test:ci:part-1 && pnpm run test:ci:part-2 && pnpm run test:ci:part-3 && pnpm run test:ci:part-4 && pnpm run test:ci:part-5 && pnpm run test:ci:part-6`
4. Generate the merged report:
`pnpm run coverage:report`
5. Open the report:
macOS: `open coverage/index.html`
Linux: `xdg-open coverage/index.html`

`pnpm run coverage:report` runs remapping first (`coverage-remapped.json` when available), then merges all workspace coverage files and creates HTML + text output via `nyc`.

To create a new package, follow the following steps:

1. Clone the time folder within /packages/utils/time to the desired destination and rename it
2. Update the package.json `name`, `description`, `version` fields
3. Possibly add other depencencies to the package.json `dependencies` field (like `@peerbit/crypto`)
4. Delete contents in CHANGELOG.md
5. Update the root package.json `workspaces` field
6. Update the root pnpm-workspace.yaml packages list
7. Run `pnpm install` once in the root

We recommend running tests with the VS Code integration though: https://github.com/CoderLine/mocha-vscode

### VScode specific
Add the following to your settings.json file:
```sh
{
"vitest.experimentalStaticAstCollect": true, // might be helpful
"search.followSymlinks": false, // prevents rg hogging CPU
}
```

## Let's Get Coding!

[peerbit.org](https://peerbit.org)