Skip to content

remoras diaries: part 1

i need a place for notes that works the way i want (and need).

Ariel M. (she/her)
Jul 22, 20262 min read4 reads
6

'm tired of waiting for my ideal notetaking / to-do / self-management app to exist.

Logseq was close. But it's been what, 2 years?, since they started a rewrite. But I knew I wanted the features they would add (databases)! But two years on and that's come at the sacrifice of other features I use (whiteboards), while making others more challenging than I want (self-hosted sync).

So,

Remoras. A fish. Friend of sharks, wales, turtles and rays. A mutualistic relationship to get them where they want to go.


At its core, I want Remoras to be an outliner. Everything is (or could be) a node. It can link to anything else. I don't have to think about where to put a new note; it can just go into the journal.

But I also have Special Systems™ I use to keep my notes organized where it matters.

And if I'm going to do this, I want anyone to be able to use it. This means I don't want to restrict the design to an outliner-only mental model. I want to design an app that is adaptable to different ways of notetaking. From block-based workflows in Roam Research to folder-file systems like Obsidian or database-heavy approaches like Notion – remoras should let you define your notetaking experience.

In these diaries, I'll walk you (really, myself) through what I'm thinking.


This is where it gets kinda weedy. Up first: the base data model. Here's where I'm landing.

1 document. Partly because I'm looking at Loro CDRT. Partly because that (being a single document) seems pretty fundamentally required for an outliner to function well across sync and collaboration.

The document contains a tree. Again, necessary for an outliner.

Now, trees have nodes. Nodes=maps. If we're using Loro, there's some prescription of required Loro-managed fields. But there's also a lot of flexibility. Here's a diagram of where we're at:

Doc
└── Tree
    ├── Node
    │   ├── Node
    │   │   ├── Node
    │   │   ├── Node
    │   │   └── Node
    │   └── Node
    │       └── Node
    └── Node

Before I can show how I envision this maps from Logseq outliner to Obsidian file-folder and others, we need a basic node structure. I'm going real simple here because

weeds

nodes are weeds.

we need a whole other blog just about what the fuck is the node.

So. Simple:

Node = {
  "id": "string",       // Unique string ID 
  "parent": null,       // Or string = id of parent node
  "index": 0,           // For ordering nodes
  "data": _anything_,   // A space for stuff 
}

And we'll continue this later tonight / tomorrow / another day because it's dinner time. Toodles!

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions