• Stars
    star
    1,312
  • Rank 35,858 (Top 0.8 %)
  • Language
    Rust
  • License
    GNU Affero Genera...
  • Created about 2 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ™ OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.

Octobase
๐Ÿ™ Local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.

Rust-version-icon codecov stars Issues Closed Join Telegram Follow Twitter

OctoBase is an offline-available, scalable, self-contained collaborative database, which was originally designed for AFFiNE. AFFiNE is a local-first open source knowledge base that provides full functionality in any network environment.

Based on OctoBase, you can not only implement a rich text editor for offline writing, but also implement richer offline collaboration functions based on OctoBase's data abstraction, such as: multidimensional tables, drawing boards, etc.

Features

As an offline collaborative data database, OctoBase has the following characteristics:

  • ๐Ÿ“š Multi-platform available offline collaboration, Schemaless, structured/unstructured/rich text data storage .

  • ๐Ÿ—ƒ๏ธ Binary storage that supports data deduplication and rich media editing.

  • ๐Ÿ” High-performance real-time full-text indexing with high-quality multilingual word segmentation support.

  • ๐ŸŒ CRDT-driven P2P synchronization with rich multi-platform native support.

  • ๐Ÿ”’ Fine-grained permission control with advanced permission management.

OctoBase provides native support for offline collaboration, full-text indexing, and binary storage, making it easy for developers to build secure and high-performance local-first collaborative applications that work seamlessly across multiple platforms.

With OctoBase, you will have access to same data abstractions across platform that enable you to maintain consistency and coherence across all your applications, regardless of the devices or platforms used.

Additionally, OctoBase can function as a standalone server database, or it can be integrated directly into your application as an embedded database while remaining fully functional.

Project status

The OctoBase project is currently under heavy development, most components are not yet production ready. Major changes may occur at any time before the version reaches 1.0.

OctoBase has been used in AFFiNE Cloud. We are currently working on the following components:

  • Core
    • โœ… CRDT operation (based on yrs)
    • ๐Ÿšง CRDT operation (based on jwst-codec)
    • โœ… CRDT-based data structure compatible with blocksuite
    • ๐Ÿšง Full-text indexing
  • Sync
  • Storage
    • โœ… Storage agnostic CRDT data storage
      • โœ… SQLite adapter
      • โœ… Postgres adapter
      • ๐Ÿšง S3 adapter
    • โœ… Storage agnostic Blob storage
      • โœ… SQLite adapter
      • โœ… Postgres adapter
      • ๐Ÿšง S3 adapter
  • Binding

Contributions

A very good place to ask questions and discuss development work is our Telegram Group.

We gladly accept contributions via GitHub pull requests, you can go to contributing to see more information.

Before you start contributing, please make sure you have read and accepted our Contributor License Agreement. To indicate your agreement, simply edit this file and submit a pull request.

Goals

OctoBase aims to make it easy for developers to build local-first applications on all common platforms. In order to achieve this goal, we will strive to do these things:

  • Make it easy to build on all supported platforms.
  • CRDT-driven peer-to-peer synchronization model.
  • Self-contained library distribution.
  • Minimize external dependencies.
  • Out-of-the-box permission control.

You can see a summary of our recent updates here: What's New.

Project Overview

โ”œโ”€โ”€ apps
โ”‚   โ”œโ”€โ”€ android ##  Android scaffolding project
โ”‚   โ”œโ”€โ”€ homepage ## OctoBase homepage & docs
โ”‚   โ”œโ”€โ”€ cloud ## affine-cloud backend
โ”‚   โ””โ”€โ”€ keck ## collaboration backend
โ”‚   โ””โ”€โ”€ swift ## iOS scaffolding project
โ””โ”€โ”€ libs ##
    โ”œโ”€โ”€ jwst  ## OctoBase core library
    โ”œโ”€โ”€ jwst-binding ## Multilingual FFI bindings for OctoBase
    โ”œโ”€โ”€ jwst-codec ## CRDT implementation for OctoBase
    โ”œโ”€โ”€ jwst-logger ## logger plugins for OctoBase
    โ”œโ”€โ”€ jwst-rpc ## sync plugins for OctoBase
    โ”œโ”€โ”€ jwst-storage ## storage plugins for OctoBase

In the process of project development, there are many software development concepts that have influenced us. Thank you very much for these excellent software:

  • Fossil -- Source code management tool made with CRDTs which inspired our design on block data structure.
  • SQLite -- "Small. Fast. Reliable. Choose any three." We like this idea very much.

Hiring

Some amazing companies including OctoBase are looking for developers! Are you interested in helping build with OctoBase and/or its partners? Check out some of the latest jobs available.

Building

See BUILDING.md for instructions on how to build Octobase from source code.

License

Currently, this repository is under active development and most components are not yet production ready, so all code is under AGPL-3.0. We will switch to MPL 2.0 or a more looser license release after the corresponding components are ready for production.

More Repositories

1

AFFiNE

There can be more than Notion and Miro. AFFiNE(pronounced [ษ™โ€˜fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.
TypeScript
41,812
star
2

blocksuite

๐Ÿงฉ Content editing tech stack for the web - BlockSuite is a toolkit for building editors and collaborative applications.
TypeScript
4,289
star
3

AFFiNE.pro

AFFiNE official website, source for affine.pro
Vue
602
star
4

awesome-affine

๐Ÿ˜Ž Awesome lists about all kinds of interesting topics around AFFiNE
67
star
5

editoe

Editoe - Redefine Academic Writing.
62
star
6

design

Design System for AFFiNE and BlockSuite
TypeScript
26
star
7

docker

The official Docker deployment solution for AFFiNE.
21
star
8

affine-reader

TypeScript
12
star
9

affine.pro-legacy

affine.pro website.
TypeScript
11
star
10

AFFiNE-docs-archive

AFFiNE Docs - This GItHub is synced with the AFFiNE GitBook.
10
star
11

file-type

Node.js/wasm binding for https://github.com/mmalecot/file-format
Rust
10
star
12

blocksuite-ecosystem-ci

BlockSuite Ecosystem CI
TypeScript
7
star
13

abed

Atomico block editor demo
TypeScript
7
star
14

notesuite

Experimental note-taking app based on BlockSuite and ystream.
TypeScript
6
star
15

experimental-virgo

TypeScript
5
star
16

affine-workers

TypeScript
5
star
17

blocksuite-example-next

Example Next.js app using BlockSuite.
CSS
5
star
18

AFFiNE-Releases

AFFiNE Releases
4
star
19

.github

2
star
20

intl-segmenter-polyfill-rs

This projects polyfills the Intl.Segmenter API for browsers that do not support it.
TypeScript
2
star
21

blocksuite-compat

Package for BlockSuite compat and reliability
JavaScript
2
star
22

blocksuite-example-vite

Example Vite app using BlockSuite.
CSS
1
star
23

set-build-version

TypeScript
1
star
24

octobase-swift-binding

The static library output for Swift binding of OctoBase.
Swift
1
star
25

deploy-to-nomad

TypeScript
1
star
26

affine-plugin-demo

1
star
27

helm-charts

helm charts for affine cloud
1
star
28

collaboration-room

Cloudflare worker for blocksuite playground collaboration support
TypeScript
1
star