This page provides definitions for codebase-specific terms, jargon, abbreviations, and domain concepts used within the AFFiNE project. Understanding these terms is crucial for any engineer onboarding to the codebase.
BlockSuite is the underlying collaborative editor framework that powers AFFiNE. It is a highly extensible, block-based editor designed for real-time collaboration. It manages the document structure, content, and collaborative state.
Sources:
CRDTs are data structures that can be replicated across multiple machines, allowing concurrent updates without requiring a central coordinator. They guarantee eventual consistency, meaning all replicas will converge to the same state. AFFiNE uses CRDTs, specifically Y.js, for real-time collaborative editing packages/frontend/core/package.json96
Sources:
Y-OCTO is a high-performance Rust-based library used within AFFiNE for document parsing and CRDT-based synchronization. It provides the core logic for managing Y.js-compatible document updates in native environments.
Sources:
NAPI (Node-API) is an API for building native add-ons for Node.js. It allows Rust modules to be integrated into the Node.js and Electron environments. AFFiNE uses napi-rs to bridge high-performance Rust logic (like CRDT handling and media processing) to the TypeScript frontend and backend.
Sources:
nbstore (Native BlockStore) refers to the native Rust module and TypeScript package responsible for managing the storage and indexing of BlockSuite documents. It handles persistence and retrieval of document data, often interacting with the local file system or cloud storage.
Sources:
Copilot is AFFiNE's AI-powered assistant. It provides various AI functionalities, including chat, content generation, and document summarization. The system is designed with a pluggable provider architecture to support different LLM services.
ChatSession: Represents an ongoing conversation with the Copilot AI. It manages the turns (messages) in the conversation and the associated prompt.Sources:
In the context of AI and Copilot, MCP refers to the protocol and tools used to provide context (documents, files, search results) to the LLM during a session. This allows the AI to "reason" over the user's data.
Sources:
The Workbench is a central service in the frontend responsible for managing the overall application state, including active documents, views, and navigation. It acts as a coordinator for various editor-related operations.
Sources:
In the context of AFFiNE, "View" often refers to a specific mode or presentation of a document. This can include the standard document view, the Edgeless view, or other specialized views like the "Split View".
Sources:
Edgeless is a canvas-based view in AFFiNE that allows users to freely arrange content blocks on an infinite canvas. It is powered by the @blocksuite/affine-block-edgeless components.
Sources:
A mechanism to enable or disable specific features in the application, often used for experimental features. Flags are categorized into affine and blocksuite categories.
Sources:
A workspace in AFFiNE is a container for documents, users, and settings. It represents a collaborative environment where multiple users can work together.
Sources:
The backend of AFFiNE exposes a GraphQL API for interacting with data and services. This API is defined by a schema that specifies available queries, mutations, and types.
Sources:
Prisma is the ORM (Object-Relational Mapper) used in the AFFiNE backend for database access, generating a type-safe client for PostgreSQL.
Sources:
BullMQ is the Redis-backed queueing system used in the AFFiNE backend for background jobs such as email sending and AI processing.
Sources:
i18n refers to the internationalization system in AFFiNE, which supports multiple languages for the user interface. It uses codegen to generate TypeScript types for translation keys.
Sources:
AFFiNE Cloud is the cloud-based service that provides synchronization, backup, and collaborative features for workspaces. It is often tested using dedicated cloud test kits.
Sources:
Refresh this wiki
This wiki was recently refreshed. Please wait 6 days to refresh again.