Volver al ranking

orbitinghail/sqlsync

Rustsqlsync.dev

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

collaborativedatabaselocal-firstoffline-firstrelational-databasesqlsqlitesqlsync
Crecimiento de estrellas
Estrellas
2.9k
Forks
41
Crecimiento semanal
Issues
27
1k2k
sept 2023ago 2024ago 2025jul 2026
Artefactoscrates.iocargo add sqlsync
README

SQLSync

github actions Join the SQLSync Community

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

Example use cases

  • A web app with a structured file oriented data model like Figma. Each file could be a SQLSync database, enabling real-time local first collaboration and presence
  • Running SQLSync on the edge with high tolerance for unreliable network conditions
  • Enabling optimistic mutations on SQLite read replicas

SQLSync Demo

The best way to get a feel for how SQLSync behaves is to play with the Todo list demo. Clicking this link will create a unique to-do list and redirect you to its unique URL. You can then share that URL with friends or open it on multiple devices (or browsers) to see the power of offline-first collaborative SQLite.

You can also learn more about SQLSync and it's goals by watching Carl's WasmCon 2023 talk. The recording can be found here.

Features

  • Eventually consistent SQLite
  • Optimistic reads and writes
  • Reactive query subscriptions
  • Real-time collaboration
  • Offline-first
  • Cross-tab sync
  • React library

If you are interested in using or contributing to SQLSync, please join the Discord community and let us know what you want to build. We are excited to collaborate with you!

Installation & Getting started

Please refer to the guide to learn how to add SQLSync to your application.

Tips & Tricks

How to debug SQLSync in the browser

By default SQLSync runs in a shared web worker. This allows the database to automatically be shared between different tabs, however results in making SQLSync a bit harder to debug.

The easiest way is to use Google Chrome, and go to the special URL: chrome://inspect/#workers. On that page you'll find a list of all the running shared workers in other tabs. Assuming another tab is running SQLSync, you'll see the shared worker listed. Click inspect to open up dev-tools for the worker.

My table is missing, or multiple statements aren't executing

SQLSync uses rusqlite under the hood to run and query SQLite. Unfortunately, the execute method only supports single statements and silently ignores trailing statements. Thus, if you are using execute!(...) in your reducer, make sure that each call only runs a single SQL statement.

For example:

// DON'T DO THIS:
execute!("create table foo (id int); create table bar (id int);").await?;

// DO THIS:
execute!("create table foo (id int)").await?;
execute!("create table bar (id int)").await?;

Community & Contributing

If you are interested in contributing to SQLSync, please join the Discord community and let us know what you want to build. All contributions will be held to a high standard, and are more likely to be accepted if they are tied to an existing task and agreed upon specification.

Join the SQLSync Community

Repositorios relacionados
ether/etherpad

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

TypeScriptnpmApache License 2.0etherpadcollaboration
etherpad.org
18.5k3k
ether/etherpad-lite

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

TypeScriptnpmApache License 2.0etherpadcollaboration
docs.etherpad.org
17.2k2.9k
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.7k604
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
10.5k889
mauriceboe/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
10.4k885
ekzhang/sshx

Fast, collaborative live terminal sharing over the web

Rustcrates.ioMIT Licenseterminalcollaborative
sshx.io
7.6k296
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.7k1.3k
livebook-dev/livebook

Automate code & data workflows with interactive Elixir notebooks

ElixirApache License 2.0phoenixelixir
livebook.dev
5.8k502
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.7k313
guoguibing/librec

LibRec: A Leading Java Library for Recommender Systems, see

JavaMavenOtherrecommender-systemsrecommendation-algorithms
librec.net
3.3k1k
lovasoa/whitebophir

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

JavaScriptnpmGNU Affero General Public License v3.0collaborativejavascript
wbo.ophir.dev
2.6k483
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.

ShellMIT Licensevimkeybindings
2.6k75