Flowtelic note-taking app: Deep in the Cloud Sync woods

A behind the scenes of what's getting me super excited for Flowtelic, the note-taking app for personal knowledge management

An AI generated image of a wood in a cloud

There are few moments when building a new product where you get giddy with excitement. The moment where you, the creator, can visualise the whole thing coming together, and—for some reason—just gets you enthralled.

I’m at that moment again with Flowtelic—the note taking app that I’m building to help you study, learn, think, write and publish. And it all started with trying to figure out how to implement Cloud Sync.

The challenge

With Flowtelic being an offline application first, one of the major next pieces to the puzzle is to synchronise all your notes across different devices. However, this is challenging as you may be editing the same note offline on different computers, and you want to merge both changes when they come online.

I need to implement a Conflict Free Replicated Data Type (CRDT) and it must be robust and consistent.

As I look at the client app for Flowtelic, I realised that I need to go deeper into the data structure to allow it to synchronise to the server without conflict and with consistency across all clients.

Entity Core

For a number of years I’ve been researching a data storage technique which I call Entity Core. Its principles are simple, you store entities as nodes in a graph, and you store relationships between entities as edges. This lends itself very well to the concept of networking thinking.

I’ve mostly been looking at this for the server side data storage, with a view to allows the contents of all notes to be fully encrypted so they are meaningless should the database server get compromised by any attacker.

I’ve come to the conclusion this Entity Core technique could be very powerful for the client side implementation as well to power the client application and enable entity and relationship level synchronisations.

This is the mission—to make it work!

The benefits if this works

If I get this working, then—omfg—this will make the application transform. This is what gets me giddy with excitement.

On the surface level, by having a node based data structure, it means I can build out the following features:

  • Folder structures for storing your notes
  • Nested notes
  • Note sequences (think Folgezettel from the Zettelkasten method)
  • Attachment entities so you store files in your notes
  • Improved linking and backlinking (so it doesn’t rely on the title of a note)

But this isn’t what gets me excited. Oh no.

What makes Flowtelic, Flowtelic

What gets me super excited is custom workflows. As of right now you get a Zettelkasten inspired workflow for Flowtelic. A workflow can adapt the note types, note status options, main navigation (so you can find things like in progress projects) and of course, focus mode.

With custom workflows, on any collection you will be able to fully customise all of these aspects. Zettelkasten not your thing, no problem, maybe you want to build a PARA note-taking workflow from Building a Second Brain.

But here’s the magic: When any note can be nested in another note. And if any note can have its own workflow. And if workflows can have note types, status options, custom properties and templates. Then you can build your dream workflow.

Here’s an example. Let’s say you want to create a PARA workflow where you organise your notes in to Projects, Areas, Resources and Archive. You can set this on your collection with a PARA workflow.

Now what do you put in Projects? What if you want to create YouTube videos. Then why note create a second workflow just for YouTube videos—where you have a multiple notes for research, titles, thumbnail design, script, story and production elements.

Now imagine, your YouTube video is researched from notes you have in your Zettelkasten collection? Just link the notes into your project and start creating. The possibilities are endless.

Show, don’t tell

I’ve been resisting writing about the future of the app as I want to share what the app can do today. But this has been hard work when I’m deep in the code getting the core mechanics working. So I wrote this to share my excitement.

Words don’t do it justice however. I have a very clear visual of what it is and how it works in my head. There’s nothing like it out there. And what’s covered in this article is the tip of the iceberg. This is just a taste of what’s to come.

I’ve been working on Flowtelic in public for 18 months now with an open beta for anyone to try. I’ve been listening to feedback from my 3,000+ waitlist members. Come join the Flowtelic journey: