
Cursors in Editors and How We Build It in AFFiNE
This article briefly explains cursor-related concepts in editor design, and how they are implemented in AFFiNE

Using Enums in TypeScript
This article is not intended to teach you how to use enums in Typescript, but rather to discuss the problems of using them in real-world scenarios, based on our experiences and some references

Copy and Paste with Customized Clipboard
Copy and Paste are two of the most basic features for a practical editor

A Recommendation for interface-based programming
When implementing custom data structures, it is best to keep methods such as forEach, find and findLast coherent with Javascript's interface standards

How AFFiNE Classifies Editors
There are so many editors today that users may find it difficult to select

Why AFFiNE Chose CRDT over OT to Build a Collaborative Editor
Discover why Affine chose CRDT over OT for superior real-time collaboration, ensuring high availability, strong fault tolerance, and easy scalability to elevate your business success