Skip to content

Fancy markdown / document editor - #741

@joepio

Description

@joepio

Must-have Features

  • Add Commit operations for text insertions (real-time collaborative sync)
    • Implement in JS
    • Implement in Rust (server)
    • Make it compatible with codemirror
  • Render Atomic Resources as inline components. Use [[ syntax like Obsidian.
  • Allow markdown-like syntax to do formatting (e.g. ## Heading 2) and preview the style

Cool ideas

  • Linkifier
  • Mentions
  • Custom components
  • Slash commands? Not present in Obsidian

Approaches

Codemirror + Markdown

  • Use codemirror, because:
    • It's reliable, popular, battle-tested
    • Is plaintext
    • Allows for collaboration
  • Use markdown because
    • It's simple to read and understand
    • It is highly interoperable

TipTap

  • Has nice notion-style editor
  • No native markdown support, but import / export possible using plugin
  • Built on Prosemirror
  • Can sync, but unclear how / if this can be made to comply with Commits

Milkdown

  • Markdown first

BlockNote

  • Powered by prosemirror and TipTap, so more batteries-included than TipTap / Prosemirror.
  • Great notion-like UX with slash menu, d&d, live collab
  • Can render to markdown (or HTML of course) but markdown is considered lossy.
  • Works with Yjs, allows CRDT Consider using yjs / y-crdt for document-related commits #720
  • Built in React, which makes things easy for us!
  • Even has cool comments

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions