Skip to content

Epic: Obsidian-like Note Taking FeaturesΒ #275

@ElioNeto

Description

@ElioNeto

πŸ”οΈ Epic: Obsidian-like Note Taking Features

Transform ApexStore into a full-featured note-taking backend capable of powering an Obsidian-like application.

🎯 Objective

Build a complete note storage, indexing, and retrieval layer on top of the existing LSM-Tree engine, enabling wikilinks, backlinks, tags, graph view, full-text search, version history, and real-time sync.

πŸ“¦ Deliverables

Phase 1 β€” Core Engine (Backend Storage)

Phase 2 β€” Advanced Features

Phase 3 β€” Frontend (Angular)

πŸ”— Dependencies

  • Depends on the existing LSM-Tree engine (completed)
  • Depends on existing infrastructure: BlobStore, TimeTravelEngine, CRDT, DataSync, PubSub, VectorIndex, MultiModelEngine

πŸ“ Storage Schema Design

// Notes storage using column families
cf "default":
  note:/path/to/note.md  β†’ Markdown content (with frontmatter)
  link:target_note        β†’ [source_note1, source_note2, ...]
  backlink:source_note    β†’ [target_note1, target_note2, ...]
  tag:tagname             β†’ [note_path1, note_path2, ...]
  __blob_meta:asset.png   β†’ Chunk metadata (JSON)
  __blob_chunk:asset.png:0 β†’ Raw bytes

// Time-travel snapshots
snapshot_{timestamp}.json β†’ Full KV snapshot at point in time

// CRDT sync (per-device)
crdt:device_id:note:path  β†’ { value, timestamp }

πŸ“Š Key Metrics

  • Note write latency: < 50Β΅s (p99)
  • Note read latency: < 20Β΅s (p99)
  • Full-text search: < 100ms for 10K notes
  • Graph view load: < 200ms for 1K connected notes
  • Sync convergence: < 2s across devices

πŸ§ͺ Acceptance Criteria

  • All Phase 1 issues are implemented with tests
  • REST API allows full CRUD for notes
  • Wikilinks are parsed and indexed on write
  • Backlinks resolve correctly after renames
  • Tags are searchable by prefix
  • Graph view returns valid JSON for D3.js/vis.js
  • Frontend renders markdown, graph, and file tree
  • Version history preserves at least N snapshots
  • Sync converges under CRDT merge rules

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicLarge feature with sub-tasksobsidianObsidian-like note-taking features

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions