toeverything/OctoBase

Rustoctobase.dev

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

collaborativeself-containeddecentralized-storagedatabasep2prustserverlesscrdtstorage
Star 增长趋势
Star
2.1k
Forks
139
周增长
+4
Issues
34
5001k1.5k2k
2023年1月2024年3月2025年6月2026年9月
制品库crates.io
README

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 y-octo)
    • ✅ 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.

相关仓库
ether/etherpad

Etherpad: A modern really-real-time collaborative document editor.

TypeScriptnpmappApache License 2.0etherpadcollaboration
etherpad.org
18.5k3k
suitenumerique/docs

Docs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.

PythonPyPIMIT Licenseknowledgewiki
docs.la-suite.eu
16.8k628
liketrek/TREK

A self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.

TypeScriptnpmGNU Affero General Public License v3.0budget-trackercollaborative
demo.liketrek.com
13.4k1.2k
ekzhang/sshx

Fast, collaborative live terminal sharing over the web

Rustcrates.iocliMIT Licenseterminalcollaborative
sshx.io
7.7k300
ONLYOFFICE/DocumentServer

ONLYOFFICE Docs is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time.

ShellGNU Affero General Public License v3.0onlyofficeoffice
onlyoffice.com/see-it-in-action
6.9k1.3k
livebook-dev/livebook

Automate code & data workflows with interactive Elixir notebooks

ElixirappApache License 2.0phoenixelixir
livebook.dev
5.9k513
ruilisi/fortune-sheet

A drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

TypeScriptnpmMIT Licenseexceljavascript
ruilisi.github.io/fortune-sheet-docs/
3.7k315
guoguibing/librec

LibRec: A Leading Java Library for Recommender Systems, see

JavaMavenlibraryOtherrecommender-systemsrecommendation-algorithms
librec.net
3.3k1k
orbitinghail/sqlsync

SQLSync is a collaborative offline-first wrapper around SQLite. It is designed to synchronize web application state between users, devices, and the edge.

Rustcrates.ioApache License 2.0collaborativedatabase
sqlsync.dev
2.9k41
lovasoa/whitebophir

Online collaborative Whiteboard that is simple, free, easy to use and to deploy

JavaScriptnpmappGNU Affero General Public License v3.0collaborativejavascript
wbo.ophir.dev
2.6k485
erikw/vim-keybindings-everywhere-the-ultimate-list

The ultimate list of which programs support Vim-like keybindings natively, or how they can be added with extensions. A collaborative project.

ShellawesomeMIT Licensevimkeybindings
2.6k76
YousefED/SyncedStore

SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.

TypeScriptnpmMIT Licensecrdtyjs
syncedstore.org
1.9k59