I've built exactly what you're describing, but for the sake of a b2c product.
89 karma · joined July 22, 2018
Currently building: https://marcoapp.io
I've built exactly what you're describing, but for the sake of a b2c product.
Search is single-digit ms!
Search is single-digit ms. All metadata stored on the client.
I built this over the course of a year, literally driven by my frustration with Apple Mail. Maybe give it a try!
Edit: Also, extremely brave of you to upgrade to Tahoe. No chance for me
The Rocicorp team have decided to focus on a different product, Zero, which is far less "offline-first" in that it does not sync all data, but rather syncs data based on queries. This works well for applications that have unbounded amounts of data (ie something like Instagram), but is _not_ what we want or need at Marco.
And by the way, we didn't opt for an in-house IndexedDB solution because we have targets in which IndexedDB does not exist (mobile, desktop).
How do you handle offline-first in your mobile apps? Are your mobile apps webviews?
On mobile and desktop, IndexedDB does not exist, and SQLite is available first-class.
We have hundreds of thousands of entities in Replicache, and index them via Orama. We're able to perform full-text search in single-digit ms.
We persist the Orama index as JSON, so computation only happens once per mutation.
The selling point is that it's IMAP primitive, as the blog post mentions.
Thunderbird is nice, but it's not cross-platform. Superhuman and Notion Mail are nice, but they only support Google and Outlook.
Apple Mail is truly awful.
There's a gap in the market, and as I said we're building it for ourselves.
There's been a massive influx of "new gen" email clients in the past year or so.
That said, we're not an "AI product".
Do you not have any need for CRDT?
Turns out a lot of other people do too.
This is discussed in the blog post. A lot of offline-first tools fall apart at this scale.