Octobase
๐ Local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.
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
โ Blob Sync abstractionโ RESTful๐ง S3
โ Collaboration abstractionโ WebSocket connectorโ WebRTC connector๐ง libp2p connector
- Storage
โ Storage agnostic CRDT data storageโ SQLite adapterโ Postgres adapter๐ง S3 adapter
โ Storage agnostic Blob storageโ SQLite adapterโ Postgres adapter๐ง S3 adapter
- Binding
๐ง Java binding๐ง Swift 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.