Skip to content

Latest commit

 

History

History
393 lines (346 loc) · 24.5 KB

lib-collab-common-examples-saas-apps.md

File metadata and controls

393 lines (346 loc) · 24.5 KB
title tags created modified
lib-collab-common-examples-saas-apps
collaboration
examples
saas
toc
2022-11-05 10:35:19 UTC
2023-01-17 19:14:47 UTC

lib-collab-common-examples-saas-apps

guide

  • collab-dev-xp

    • 基于缓存实现sync有点类似于react-query
    • 参考vlcn
    • 不要执着于某个框架,更要参考成熟的解决方案,功能更丰富
  • 协作方案参考

    • Liveblocks, synced-store, FluidFramework, gun
    • automerge (2017), yjs (2015), sharedb (2013)
    • usecase: 实时场景案例,如 聊天/游戏
    • search-keywords: collaborative-workspace, multiplayer(game), realtime, socket-room, chat, lowcode-socket

collab-platform

collab-apps

realtime-room

gaming

  • https://github.com/lance-gg/lance /apache2/202405/ts
    • https://lance-gg.github.io/
    • Multiplayer game server based on Node. JS
    • It provides an extendible Node. JS based server, on which game logic runs, as well as a client-side library which synchronizes the client's game state with the server game state.
    • In order to provide a smooth visual experience for each connected client, Lance implements efficient networking methods, position interpolation and extrapolation, user input coordination, shadow objects, physics and pseudo-physical movement, automatic handling of network spikes.
    • Communication is packed and serialized into binary
    • Replay saving

cursor

utils

  • clientdb /506Star/apache2/202207/ts/同步未完成

  • https://github.com/Bhavik-ag/B-Docs

    • an online document editor to create, edit and collaborate on online documents.
    • Version Control and Hosting : Git for Source Code Management and Github for Hosting
  • https://github.com/orda-io/orda /go

    • A client and server written in Go.
    • CRDT-based data synchronization supporting document database.
    • Orda project is a multi-device data synchronization platform based on MongoDB (which could be other document databases such as CouchBase).
      • Orda is based on CRDT, which enables operation-based synchronization.
    • https://github.com/orda-io/orda-js
      • Javascript(or Typescript) SDK for Orda project.
    • https://github.com/orda-io/orda-jsoneditor /ts
      • Orda-JSONEditor implemented with Orda-js allows multiple users concurrently to edit any document in a collection of MongoDB
  • sync_server-nedb /33Star/MIT/201807/js

    • https://github.com/nponiros/sync_server
    • A simple server which can be used to synchronize data from multiple devices
    • A small node server which uses NeDB to write data to the disk.
      • The database used to store the data. Currently only NeDB is supported
    • The server can be used with a client for example SyncClient to save change sets which can later be synchronized with other devices.
      • The server was made to work with the ISyncProtocol and Dexie.Syncable.
      • 👉🏻 It supports the poll pattern using AJAX and the react pattern using nodejs-websocket.
  • sync_client-dexie /29Star/MIT/201804/js

    • https://github.com/nponiros/sync_client
    • This module can be used to write data to IndexedDB using Dexie and to synchronize the data in IndexedDB with a server.
    • Dexie.Syncable is used for the synchronization. This module contains an implementation of the ISyncProtocol.
    • It was primarily written to work with sync-server but should work with other servers which offer the same API.
  • gun/gundb /16.9kStar/MIT/202302/js

    • https://github.com/amark/gun
    • GUN is an ecosystem of tools that let you build community run and encrypted applications - like an Open Source Firebase or a Decentralized Dropbox.
    • GUN supports more than just key/value pairs, it is a graph database that can store SQL-like tables, JSON-like documents, files and livestreaming video, plus relational and hypergraph data!
    • Gun is a graph database. I don't think Orbit uses a graph system, but instead uses feeds or KV stores. So that's a another difference. But Gun can use IPFS as a storage adapter if you wanted.
    • GUN — the database for freedom fighters - Docs v2.0
      • The conflict resolution algorithm (also called HAM) is at the center of everything gun does. It's how peers eventually arrive at the same state, and how offline edits are merged. Every change in the system goes through HAM.
    • Is GUN suitable for building collaborative text editor using causal-tree merging strategy?
      • Yes, I did a demo a long time ago.
      • GUN's base CRDT allows for other CRDTs (like a causal-tree) to be implemented on top, so you could do your own custom algorithm.
    • CRDT semantics
  • https://github.com/TopGunBuild/topgun /ts/gundb

    • Reimplementation of gunDB in TypeScript
    • A graph data synchronisation engine for building realtime, offline-first, secure and scalable applications.
  • https://github.com/Manwe-777/tool-db /ts

    • a peer-to-peer model for a decentralized database, inspired by GundB
    • Key-value/document storage.
    • Capable of providing realtime updates.
    • Works in the Browser and Nodejs seamlessly.
  • https://github.com/gundb/panic-server

    • Panic is an end-to-end testing framework, designed specifically for distributed systems and collaborative apps.
    • At gunDB, we're building a real-time, distributed JS database.
    • We needed a testing tool that could simulate complex scenarios, and programmatically report success or failure.
  • https://github.com/earthstar-project/react-earthstar

  • https://github.com/earthstar-project/earthstar /LGPLv3/ts

    • Storage for private, distributed, offline-first applications.
    • Earthstar is an offline-first key-value database which supports author versions.
    • This is a reference implementation written in Typescript. You can use it to add Earthstar functionality to applications running on servers, browsers, the command line, or anywhere else JavaScript can be run.
    • can store arbitrary data, keyed by two pieces of information: a free-form path and a public key identifying the author. So a single path like /wiki/flowers may hold revisions by multiple authors.
    • A share's data is stored on its users' devices using replicas.
      • A replica is a concrete copy of the data in a share, stored on a user's device.
      • When two replicas are configured to use the same share address, they can synchronise their data with each other
    • Data stored in a replica are persisted as separate Documents.
      • Documents describe and contain your share's data.
      • Every document has a path like /my-story.txt.
    • Comparison to Kappa-db?
      • Kappa-db is a bundle of append-only logs (hypercores), one per author per device. It builds indexes by processing messages from the logs, in order, to build up a reduced state. The logs grow forever.
      • Earthstar is a key-value database.You can hold any subset of the documents, sync them in any order, do partial sync, drop ones you don't want.
      • Kappa-db uses hyperswarm to find peers and the hypercore protocol to sync data, with some custom stuff to handle multiple hypercores.
      • Earthstar is not well developed here. It can connect to cloud peers over HTTP for syncing, in the style of SSB pubs. I'm planning to add hyperswarm also for direct p2p connections.
      • Kappa-db relies on "logs that sync" as the underlying abstraction.
      • Earthstar relies on a specification for "signed versioned documents".
  • https://github.com/google/ot-crdt-papers

    • This repository will hold papers Raph Levien is writing on technologies for collaborative text editing, in particular at the intersection of Operational Transformation and Conflict-free Replicated Data Types (CRDT's).
    • It also holds a prototype implementation in JavaScript, using socket.io.
  • https://github.com/vector-im/element-web

    • A glossy Matrix collaboration client for the web.

more