AFFiNE is a cross-platform, block-based knowledge management application that combines notes, whiteboards, and databases in a local-first, real-time collaborative environment. Built on the BlockSuite editor framework, it features a modular architecture with extensible components, AI-powered capabilities (Copilot), and support for embedding external content. The application consists of a web client, desktop client (Electron), and mobile clients (iOS/Android), backed by a Node.js/NestJS server with Prisma ORM and Rust performance modules. Data is synchronized via Yjs CRDTs with a custom storage layer (nbstore) for offline-first capabilities.
Graphite is a free, open-source vector and raster graphics editor with a fully nondestructive editing workflow. It combines layer-based compositing with node-based generative design, enabling procedural content creation. The system is architected as a multi-crate Rust workspace with a desktop application (using Chromium Embedded Framework for UI and wgpu for GPU rendering) and a web frontend (Svelte + Vite compiled to WebAssembly). The core document model is a node graph executed by an interpreted runtime with GPU shader support via rust-gpu. Storage uses a CRDT-based format (`.gdd`) with content-addressed deltas, history, and session state, supporting collaborative editing and undo/redo. The editor features a comprehensive tool system (select, pen, brush, shape, text, etc.), a node graph editor, color management, raw image decoding, and vector path operations. The frontend communicates with the Rust backend through a message-passing architecture with hierarchical message types and a dispatcher pattern. The project also includes a CLI tool for export, a build system (cargo-run), and extensive developer tooling (bisect tool, crate hierarchy visualizer, node documentation generator).
Liveblocks is a real-time collaboration infrastructure platform providing SDKs and APIs for adding presence, storage, comments, and notifications to applications. The monorepo contains core CRDT-based synchronization logic, framework-specific integrations (React, Next.js, etc.), and numerous examples demonstrating usage. Key architectural elements include a custom protocol for real-time data sync, React hooks for accessing Liveblocks data, and a provider pattern for room scoping. The platform supports AI-enhanced collaboration features through copilots and knowledge integration. The SDKs are designed for extensibility, allowing developers to define custom presence and storage types while maintaining type safety. UI primitives (avatars, buttons, tooltips) are built with Radix UI and Tailwind CSS, offering consistent and customizable components. Authentication and room management are handled via secure endpoints, with examples showing integration with NextAuth, custom APIs, and various backend services. Examples cover a wide range of use cases from collaborative text editors (Tiptap, Lexical, Yjs) to whiteboards, spreadsheets, and AI-powered dashboards. Starter kits provide production-ready templates with authentication, organization management, and deployment configurations. The active maintenance and frequent updates ensure compatibility with modern frameworks and address evolving collaboration needs.
Actual Budget is a mature, open-source personal finance application that operates on a local-first architecture with optional multi-device sync. In production, it provides envelope and tracking budgeting, transaction management, bank account synchronization via GoCardless/SimpleFIN/Pluggy, scheduled transactions, an advanced rules engine for auto-categorization, custom reports and dashboards (including Monte Carlo forecasting), and multi-user sync server capabilities. The system is built as a monorepo with distinct packages: `loot-core` (business logic, SQLite database, CRDT sync, custom AQL query language), `desktop-client` (React SPA with Redux and TanStack Query), `desktop-electron` (Electron wrapper), `mobile-client` (Capacitor-based), `sync-server` (Express with authentication and bank integrations), `cli` (headless management), `api` (public npm package), `component-library` (design system), and `crdt` (conflict-free replicated data type). Data flows from user input or bank imports into a local SQLite store, with optional sync to other devices via a CRDT protocol over a WebSocket/HTTP server. The project demonstrates high engineering craftsmanship with extensive tests, custom but well-documented systems, and a strong modular architecture. It is not a data research project.
Fluid Framework is a production-grade TypeScript monorepo for building real-time collaborative applications. It provides a layered client runtime stack (container-loader, container-runtime, datastore) and a family of distributed data structures (DDS) including SharedTree, SharedMap, SharedString/Sequence, SharedMatrix, and SharedCounter. State synchronization is driven by operation logs and summaries, with versioned op formats and codec families that allow protocol evolution. The repo also includes server components (Routerlicious, Tinylicious, Gitrest, Historian) that provide ordering, storage, tenant management, and REST APIs, plus driver abstractions for Azure Fluid Relay, ODSP, local files, and replay scenarios. The architecture is a large pnpm monorepo organized into release groups: client, routerlicious, gitrest, historian, and build-tools. Application developers integrate through container runtime factories and data-object patterns; DDS packages encode changes as versioned ops and summaries; server lambdas order, persist, and broadcast ops; Gitrest/Historian provide Git-based snapshot storage. The repository also contains extensive example apps (React-based collaborative textareas, dice rollers, staging, table editors) and a devtools browser extension, but those are reference/demo surfaces rather than the core product. Although classified as an application/library, the repository has a research-heavy character: SharedTree's design involves deep schema, codec, and change-family work; there are multiple generations of tree DDS (modern, experimental, and legacy PropertyDDS); and there is extensive stochastic/fuzz testing, snapshot compatibility testing, and performance benchmarking. The codebase is highly active and professionally maintained, with recent commits, robust changeset/CI tooling, and strong API compatibility automation. However, it carries notable legacy baggage: deprecated common-utils packages, experimental DDS code, duplicated server helpers, hardcoded test ports, and several half-completed migrations. These are mostly isolated to legacy corners, making the overall drift manageable.
Logux Server is a framework for building real-time collaborative servers using the Logux protocol. It synchronizes a log of operations between clients, server, and other clients via WebSocket. The server handles authentication, channel subscriptions, action processing (access, resend, process), and supports PostgreSQL for persistent log storage. The architecture is modular, with clear separation of concerns: base server, client management, context, action queues, and logging. It provides a rich API for defining action types and channels with callbacks, and includes test utilities (TestServer, TestClient) for integration testing. The codebase is well-structured, uses modern JavaScript (ESM, Node 22+), and demonstrates high craftsmanship with careful error handling, async patterns, and comprehensive test coverage (100% line coverage target).
git-bug is a distributed, offline-first bug tracker that stores issues as immutable operations in a Git DAG, enabling conflict-free merging and replication. It provides multiple interfaces: a CLI (Cobra), a terminal TUI (gocui), a modern web UI (React/TanStack Router/Apollo Client/Shiki), and a GraphQL API (gqlgen). The system supports bidirectional synchronization (bridges) with GitHub, GitLab, Jira, and Launchpad via import/export patterns. Entity data uses Lamport logical clocks for ordering and a generic DAG entity framework that can be reused for other entity types (e.g., identities, future pull requests). The web UI features a well-layered component architecture (ui/shared/feature) with colocated GraphQL fragments, Storybook stories, and snapshot tests, while the backend includes a caching layer (LRU, excerpt snapshots) and full-text search via Bleve.
p2panda is a modular Rust framework for building privacy-respecting, local-first peer-to-peer applications. It provides a complete stack including core data types (append-only logs, CRDT-friendly operations), networking (QUIC via iroh, gossip via HyParView, mDNS, confidential discovery), storage (trait-based with SQLite backend), sync protocols (log sync, topic handshake), encryption (group and two-party schemes with forward secrecy), authentication (decentralized group CRDT with fine-grained permissions), and event stream processing (ingest, causal ordering, pruning, spaces). The architecture is actor-based (ractor) with supervision trees, trait-based abstractions for pluggability, and a pipeline processor for composable event handling. It is under active development (pre-1.0) with frequent releases and extensive CI, but contains some unfinished features and TODO comments. The codebase demonstrates high craftsmanship with clean abstractions, pure functional state updates in encryption, and reusable patterns like the processor pipeline, causal orderer, and deduplication buffer.
pycrdt is a Python library providing bindings for Yrs, the Rust port of the Yjs CRDT framework. It enables real-time collaborative editing by offering shared data types (Text, Array, Map, XmlFragment, etc.) that automatically merge concurrent modifications across distributed replicas. The library implements a full transaction system, event observation, document synchronization protocols, awareness management, undo/redo functionality, snapshots, and typed containers with static type analysis support. The architecture is a hybrid Python/Rust package using PyO3 for the FFI layer, with the heavy lifting done in the `yrs` Rust crate. The Python layer provides clean, idiomatic interfaces with both synchronous and async APIs, leveraging `anyio` for async transaction and event handling. The library is well-tested with 100% code coverage, includes extensive documentation, and follows modern packaging practices with `maturin` for building and publishing. It is suitable for building collaborative applications such as real-time text editors, whiteboards, or any multi-user data-sharing system.
Epicenter is a monorepo platform for building local-first, privacy-focused productivity applications with optional cloud sync. It encompasses a suite of apps including Honeycrisp (notes with Yjs CRDT sync), Whispering (voice transcription/dictation with local and cloud providers), Matter (typed markdown vaults with SQLite projection), Local Mail (Gmail mirror with offline triage), Local Books (QuickBooks mirror with CLI tools), Vocab (AI language tutor), Skills (agent instruction management), and the Epicenter desktop host (Tauri + Bun sidecar). The shared platform provides a CRDT-based data layer (Yjs with Durable Object authority), portable blob storage (IndexedDB, OPFS, S3), an OAuth/infrastructure-agnostic auth system, an agent loop framework with tool catalogs, and a server framework built on Hono for Cloudflare Workers or Bun. The architecture emphasizes offline-first, typed error handling (Result/defineErrors pattern), compile-time platform seams (browser/Tauri/desktop-host), and rigorous ADR-driven design with evidence benchmarks.
OrbitDB is a serverless, peer-to-peer distributed database library built on IPFS and libp2p. It provides a Merkle-CRDT (conflict-free replicated data type) log as its core primitive, supporting multiple database types like Events (append-only log), Documents (indexed JSON), KeyValue, and KeyValueIndexed. The architecture is modular: it separates storage backends (memory, LevelDB, IPFS blocks, LRU cache), identity management (pluggable providers), access control (static ACL or dynamic ACL stored in a keyvalue database), and encryption (pluggable). The primary entry point is `createOrbitDB()`, which returns an OrbitDB instance that can open databases of any registered type. Data flows involve appending operations to an immutable, signed log of IPLD entries, syncing with remote peers via pubsub-based replication, and handling conflict resolution using Last-Write-Wins. External dependencies include Helia (IPFS), libp2p, LevelDB, and various multiformats libraries. The library is designed for both Node.js and browser environments, with a comprehensive test suite covering unit and integration scenarios.
This repository is the development branch of the collaborative editing binding between CodeMirror 6 and Yjs, published as the unstable @y/codemirror package targeting Yjs v14 (@y/y). It is a library, not an application: consumers embed it into a CodeMirror editor to synchronize a Y.Text shared type with the editor's document, render remote cursors and selections, and enable shared undo/redo with per-client history. The primary entry point is the yCollab(ytext, awareness, opts) function in src/index.js, which composes three CodeMirror plugins: ySync (bidirectional Y.Text <-> editor sync), yRemoteSelections (awareness-based remote cursor/selection rendering), and yUndoManager (Y.UndoManager integration with selection restoration). A fourth internal state field, yAttributionDecorations, renders Yjs attribution manager data (insert/delete markers) as editor decorations. The architecture is a modular set of CodeMirror 6 extensions communicating through facets and annotations. Local editor transactions are converted to Yjs deltas and applied to Y.Text inside a tagged Yjs transaction; remote Yjs updates are observed and dispatched back into the editor with annotations. Remote selections are transmitted as Yjs relative positions via awareness and rendered as decorations and widget carets. The undo plugin stores selection ranges as YRange (relative positions) on Yjs stack items, allowing selections to be restored after concurrent edits. Code is ESM with JSDoc-based TypeScript checking, rollup for CJS/IIFE builds, and peer dependencies on @codemirror/state, @codemirror/view, @y/y, and @y/protocols. Tests are robust for a collaborative editor library: they use lib0's PRNG-based fuzzing with @y/y/testHelper to apply random multi-editor transactions and assert document convergence. The codebase is generally well-crafted with clean separation of concerns, though it sits on pre-release Yjs v14 APIs, contains a few TODOs, and pins CI to Node 16 with older jsdom — hence moderate technical drift. The stable Yjs v13 line remains the separate y-codemirror.next package; this repo is explicitly experimental.
Fireproof is a local-first, real-time document database with CRDT-based conflict resolution, end-to-end encryption, and multi-platform support (browser, Node.js, Deno, Cloudflare Workers). The monorepo contains the core database engine (`@fireproof/core`), a cloud sync backend (Hono + Durable Objects), a dashboard web application for tenant/ledger management, a CLI tool for build and DevOps tasks, and a React hooks library (`use-fireproof`). The architecture is modular with clear separation between storage gateways (IndexedDB, filesystem, memory, cloud), key management (KeyBag with fingerprinting), device identity (X.509-like PKI), and protocol layers (WebSocket/HTTP message dispatch). The codebase exhibits strong engineering practices including extensive TypeScript usage, comprehensive testing (though some tests are skipped or known to fail), and reusable patterns like the Gateway interceptor, Result type, and Evento command pipeline. However, complexity is high due to multiple runtime targets and active refactoring between versions, and there are known critical bugs (e.g., remote sync not triggering subscriptions in React hooks).
Spacedrive is a cross-platform file manager and virtual distributed file system (VDFS) that unifies files across devices and cloud storage into a single, searchable library. The core engine is written in Rust and provides indexing, media processing (thumbnails, OCR, speech-to-text), P2P sync with conflict resolution, volume detection, file operations, and an extensible WASM plugin system. The codebase is a large monorepo with multiple frontends: a Tauri desktop app, React Native mobile app, CLI, and web interface, all communicating with a daemon process via a typed RPC protocol. The architecture follows CQRS/DDD patterns with auto-generated TypeScript types and a job/task system for background work.
Berty is a full-stack, privacy-focused, peer-to-peer messaging application. The system consists of a Go backend implementing the Wesh protocol (based on IPFS, libp2p, and OrbitDB) that provides core messaging, push notifications, authentication, replication, and directory services. The backend is exposed via gRPC and consumed by multiple clients: a React Native mobile app (with both a legacy JS variant and a newer Expo-based variant), a Go CLI with a terminal UI (mini) and a desktop GUI (Fyne), and native bridges for iOS and Android. The architecture is modular, with separate packages for error handling, authentication, push relay, and bot framework. Key entry points include the `berty daemon` CLI command, the mobile app entry points (`App.tsx` in both `js/packages` and `berty-bridge-expo/mobile`), and the bridge framework (`go/framework/bertybridge`). Data flows involve gRPC streams from the Go backend to the mobile clients, with event-driven state management and local encrypted storage via SQLCipher. External dependencies include libp2p, OrbitDB, gRPC, protobuf, and various platform-specific native modules for BLE, mDNS, and push notifications. The repository also contains auxiliary tools for infrastructure testing, rendezvous servers, and debugging (Tyber).
Colanode is a local-first collaboration workspace platform designed for self-hosting. It provides real-time editing of rich-text documents, customizable databases (table, board, calendar views), threaded chats, file management, and user roles. The architecture is a monorepo with separate packages for core types, client-side local persistence and sync, CRDT conflict resolution, and a shared UI library. The server runs on Fastify with PostgreSQL and Redis, exposing REST APIs and WebSocket connections for real-time synchronization. All data mutations are first applied locally in SQLite (via Kysely) and then synced to the server, enabling offline-first operation. Clients include a web application (React, Vite, service worker), a desktop app (Electron), and an experimental mobile app (Expo). The editor is built on TipTap/ProseMirror with custom extensions for blocks, mentions, files, and database nodes. External dependencies include PostgreSQL (with pgvector extension for optional vector search), Redis (for rate limiting and job queues), object storage (local filesystem, S3, GCS, or Azure), and optional AI/LLM providers for semantic search and assistant features. Many AI features are commented out or in development, indicating an incomplete experimental layer. The codebase is actively maintained with CI/CD pipelines, Docker images, Helm charts, and automated tests for critical server and web components.
AppFlowy-Web is a feature-rich collaborative workspace application built with React, TypeScript, and Yjs (CRDT). It provides real-time collaborative document editing via a Slate-based editor, multiple database views (grid, board, calendar, gallery, list, timeline, feed, chart), AI-powered writing assistance and chat, publishing/sharing capabilities, and workspace management. The application is designed as an open-source alternative to Notion, supporting both cloud-hosted and self-hosted deployments. The architecture is a single-page application with Yjs as the core data model for offline-first collaboration, backed by IndexedDB caching and REST/WebSocket APIs. The codebase is extensive (4000+ files) with comprehensive unit and E2E tests, but exhibits moderate technical drift due to mixed UI paradigms (MUI + Radix), complex Yjs observer lifecycle management, and some deprecated environment variable mappings.
AppFlowy-Cloud is the Rust backend for the AppFlowy collaborative workspace platform, providing real-time document editing via CRDT (Yrs) with WebSocket sync, REST APIs for user/workspace management, AI features (chat, completion, embeddings), file storage (S3/MinIO), and background indexing. It follows a multi-service architecture with a main Actix-web server, a background worker (Axum), and an admin frontend (Axum/Askama), all orchestrated via Docker Compose. The codebase is extensive and well-structured, with many reusable libraries for database access, access control (Casbin), real-time protocol handling, and AI client integration. A significant portion is dedicated to integration tests covering collaborative sync, file uploads, and AI operations. However, this repository is explicitly marked as a legacy open-source release. The README states it is no longer maintained; active development has moved to a closed-source commercial fork. This results in some technical drift, such as deprecated endpoints, commented-out tests, and workarounds for known issues. Despite this, the code demonstrates high craftsmanship with clean abstractions (e.g., StreamRouter, ReconnectionManager, CollabStore trait) and robust patterns for distributed systems. It serves as a valuable reference for building real-time collaborative backends, but any reuse should account for its stale maintenance status and the need to update dependencies and fix known bugs.