Show HN: Eidos – Offline alternative to Notion

github.com

273 points by mayne 7 days ago

I'm a big fan of Notion, having used it for 7 years. When I first met Notion, it was just a block document editor, and it didn't excite me until it released the Database. Later, I learned about Airtable, and a bunch of similar products, all of them are SaaS, with such powerful tables but poor performance. Why isn't there a personal offline version table? Most of the time, I don't need to collaborate with others. What I really want is a personalized, offline version of Notion with better performance and more flexibility. So that I can have full control over my data.

Notion, like most SaaS products, is not open-source, so I can't customize it to my heart's content. I can only wait and vote for new features, but I can code, and I don't want to wait. I really like the concepts of FOSS, solid, and local-first. SaaS could die. Long may the SQLite. So, I built Eidos based on sqlite for managing my personal data throughout my lifetime in one place. Eidos is a long-term project for me. It looks like Notion, but the core is more like "obsidian.sqlite" with a powerful extension system.

Here are a few key ideas:

- Eidos is built based on sqlite-wasm and runs entirely in the browser. It can be used immediately, with no installation or configuration required. It's a pure PWA, with full offline support.

- A block-styled document editor and an Airtable-like table, built on top of SQLite, where each table is a real SQLite table.

- A powerful extension system inspired by Figma plugin and Cloudflare worker. You can write scripts in TypeScript directly in the browser. It is easy to manipulate data in docs, tables, and the file system. It also supports API.

- If you're not a developer, you're still in luck. We're living in an AI era. LLM empowers people to craft their own software without writing any code. Eidos deeply integrated with LLM. You can translate, summarize, talk to your data, process table data in batches, and more. It makes your life easier with AI. You can fully customize your prompts and freely choose your LLM provider, without being locked to any vendor.

To be honest, so far, there are still some bugs and shortcomings, and it hasn't yet reached my envisioned perfection. There is still some work to be done, but the basic framework has taken shape. I've been working on it for a year and have eaten my own dog food for the past half year. To help Eidos become better (and celebrate the release of the Elden Ring's DLC), I've decided to make it open-source and gather more feedback. Now, I'm going to take a break and play Shadow of the Erdtree.

- https://eidos.space

thih9 6 days ago

In case anyone else is confused, this is not related to eidos interactive, which has been now defunct for 14 years[1] (merged with square enix).

[1]: https://en.m.wikipedia.org/wiki/Eidos_Interactive

  • drawfloat 6 days ago

    Eidos Montreal was active just 2 years ago.

    I think their Eidos-Labs research department is still active.

    Personally, starting a new app called Eidos feels like a headache in the making.

    • mayne 6 days ago

      Thank you for the information. Eidos Space should be safe. I will consider this issue carefully.

  • badgersnake 6 days ago

    Lara Croft is gonna kick down their doors and enforce her trademark.

    • hnlmorg 6 days ago

      I still think of Tomb Raider as being Core Design

  • creshal 6 days ago

    Does Squenix still hold the trademarks?

    • c0balt 6 days ago

      Iirc, no. They were bought as part of the Square Enix IP acquisition, like Deus Ex and other trademarks, by Embracer Group a few years ago.

crooked-v 6 days ago

As a heads up, this seems to break completely if any of a couple of different Chrome extensions I have are enabled (for example, Simplify - https://chromewebstore.google.com/detail/simplify-copilot-au...).

Also, maybe it's just me, but I feel like the sqlite-based thing is, if anything, kind of a downside. Use it for caching and calculation, sure, but I want the source of truth to be just plain markdown files I can take into other apps in 5 years when whatever I'm using now inevitably dies.

  • mayne 6 days ago

    I know many note-taking users like the concept of markdown and plain text. So do I. However, I think plain text has its limitations. There are many other types of structured data in life. Just like Word and Excel, they have different responsibilities. No one worries that Excel will not work in a few decades because it's just an offline software. Similarly, no one worries that SQLite will be unable to open or view because it has already been running with billions of instances, becoming part of the infrastructure.

    • mst 6 days ago

      My general answer to this is to make sure whatever thing I'm building understands Pg COPY TSV syntax - specified by https://www.postgresql.org/docs/current/sql-copy.html under 'text format' - and export to/import from that.

      It's nice to have something that plays nicely with awk/cut/diff/etc. and can be committed into a git (or elsevcs) repo.

      (I'm not specifically wed to COPY as the form, but given it's well known and documented I've found it a good default)

      • mayne 6 days ago

        Interesting, I'll give it a try.

    • Fire-Dragon-DoL 6 days ago

      What logseq is going to do is just dump documents to markdown (right now they use markdown),I think something along these lines is the way to go, store in sqlite and have a constant background process creating markdown files for everything

      • mayne 6 days ago

        good idea. all documents are currently stored in the eidos__docs table. The `content` field is used to store the state of lexical documents in JSON format. Additionally, there is also a `markdown` field. This can be viewed by any sqlite software. Every time a document is updated, both fields are updated simultaneously, making it easy to convert to a file.

        • Fire-Dragon-DoL 6 days ago

          That's perfect. For what is worth, I like that's stored in sqlite because I can access it easily in a programmatic format if I need to

    • meiraleal 6 days ago

      SQLite won't stop working but your format is proprietary. A markdown can be understood even without rendering to HTML but your tables are useless for an user without your app.

      • freedomben 6 days ago

        > SQLite won't stop working but your format is proprietary.

        As far as I can tell, the whole app is open source (AGPL), and sqlite is obviously open source as well. I agree that markdown is more portable, but this setup is far from proprietary.

        I may not have made the same decision (I love having my notes in markdown), but I think OP was quite thoughtful about it and has made an informed and reasonable decision.

      • xienze 6 days ago

        You can likewise encode proprietary information in Markdown, in the sense that it can be readable but not necessarily understandable by another application that understands Markdown. Like say for example my application allows for tables that include formulas in cells. Perfectly human-readable Markdown but probably won’t have the same level of fidelity in another application.

      • tengwar2 5 days ago

        This is why I use RTF. It is considerably more flexible than Markdown (which can't do basic stuff like making text red), but not a proprietary format. The application I use (DEVONthink) supports a number of formats including Markdown, HTML and RTF, and documents how to get at the raw files if the application ever becomes unavailable. No use of a proprietary database format. This is for my 30-year files.

        I also use RTFD in the same application. This is a variant of RTF which can have embedded images. It's not universally supported like RTF, but there are sufficient third-party editors to leave me confident that I will be able to get at the information. This is for my 5-year files.

      • mayne 6 days ago

        A key idea of Eidos is to make each table a real SQLite table, so users can view and modify it through other software or visualize it with tools like Metabase

        https://eidos.space/show/sqlite.webp

rgoodwintx 6 days ago

I’ve been keeping an eye on these open source block based apps, and this kind of feels like you set out to scratch your itch and managed to release the most feature complete and polished one out there. Well done!

Something about SQLite at the core just seems to drive a direction I like, and pushes an open ethos. (Shout outs to Grist in this arena as well.) So much power in such simple interfaces… and when I saw you could just drop in your own SQL into Eidos, I shed a tear at the graveyard of my never-quite-working attempts at data-fying Obsidian.

  • darkteflon 5 days ago

    As a long-time dilettante in this space, I totally agree. I am all-in on Obsidian (and a long-term paying sync customer) which is imo peerless for note-taking, and of course the plugin ecosystem is very vibrant.

    But there’s no question that there’s something special about the core “block” abstraction used by Notion (and, I see, AnyType), in that it really does allow you to not only structure and display information in absolutely any way you want, but also to reason about that structure in a unified way. You can come back after a month away and still remember how everything fits together. You can literally build everything a team needs: wikis, datatables, highly customised task/project managers, CRM, etc. And it’s all multiplayer.

    Notion the _product_ ain’t it, though. Closed-source, SaaS, very slow, buggy electron apps (Obsidian’s electron apps are very good, by the by - and their sync service is faultless). Hopeless handling of copy-pasted markdown: why can’t I simply paste markdown content in from another app and have it appear - and be editable - as a normal page? Insufficient access controls, no locking of page designs, poor sharing UX (just let me copy a link to the page without throwing up an access permissions dialog box each time and warning me that certain people won’t have access when they definitely will).

    The final complaint would be that they’re sort of caught between different audiences. We already had a company wiki we built with the block abstraction and were very happy with, then they went and introduced a new “Wiki” … I dunno … “special type”. Is it composed just of blocks like everything else, or does it get some kind of special treatment. Is every page I create under the “Wiki” folder a normal page, or somehow special? I get that they have to walk a line between power and casual users, but any UX decision that obscures the core block abstraction fails to strike that balance, imo. Why didn’t they make Wikis just another official template built of normal blocks?

    All of which is to say: I remain really hopeful on this space and would love to see an open source project come along and take the crown. Certainly an increasing number of promising entrants.

    • richardreeze 5 days ago

      Can you share some more promising entrants? I like op's solution because it's highly customizable, but too early/ buggy to replace Notion.

      I was coincidentally looking at Anytype yesterday, but can't create my own extensions (and the database has no formula type for columns??).

      Curious if there's something that's been around for 1 year+ and allows me to build my own extensions?

      • darkteflon 3 days ago

        AppFlowy is another big open source entrant, but I haven’t looked at it recently and can’t comment on its qualities.

  • o1o1o1 6 days ago

    > my never-quite-working attempts at data-fying Obsidian

    What is not working for you if I may ask?

PurpleRamen 7 days ago

You maybe want to check the trademarks for this name, there are some for it. Not that this must become a problem, but it's better to avoid potential problems early.

Besides that, SQLite seems promising, but not sure how exactly this relates to everything. The website is talking about saving in browser, and there is no release on the GitHub. Is this something running in browser only?

  • mayne 7 days ago

    Thanks for the reminder. I know this makes SEO more challenging, and it also reminds people of a certain game company, but I really love this concept, which originates from the Plato's theory of forms, and it pairs perfectly with the eidos.space domain name. While it may not be a great business name, the concept itself is exciting.

    Eidos is deployed on Cloudflare Pages. it's a purely frontend project and the web is only used for distribution. In order to iterate faster, I didn't use GitHub's release yet.

    There are some enhanced experience services running on serverless, but they are not necessary. For instance, adding a bookmark block to a document requires fetching extra information through a URL. This relies on https://github.com/mayneyao/link-preview . Most of the CORS related work is implemented through Cloudflare worker. These services are not necessary. Moreover, they are open-sourced and can be self-deployed. For more details, see https://github.com/mayneyao/eidos/blob/main/lib/const.ts#L64

    • fourside 6 days ago

      Sorry I’m a bit confused. You describe this as an offline alternative to Notion, but there are also some optional components that run on serverless?

      • mayne 6 days ago

        You can use Eidos with Wi-Fi off. when you add a bookmark, it won't display a rich information card, but just a URL. if you don't like this part, I can provide options to disable them. All of this can be solved through Electron, but I think PWA is enough, and Cloudflare generously provides some services.

  • vr46 7 days ago

    Yes, the first thing I thought was, “Tomb Raider”!

    • lagniappe 6 days ago

      [flagged]

      • PUSH_AX 6 days ago

        Did you transition to HN from Reddit by any chance?

karencarits 6 days ago

I have tried quite many such apps and keep returning to Tiddlywiki (https://tiddlywiki.com/). It is not perfect, and the lack of hierarchy can be both a blessing and a curse. It uses flat-files which can impact performance and be more cumbersome than a database. Also, the integration with external files is a bit clumsy.

However, the main strength is customizability. Various data is best presented in various ways, and separating data/content and presentation/template/layout while keeping them tightly integrated is incredibly powerful.

Cudos for thinking long-term with SQLite, avoiding lock-in is crucial for these kinds of apps!

  • enbugger 6 days ago

    How is it different to Obsidian?

    • karencarits 5 days ago

      * Tiddlywiki has existed for many years (first version came 20 years ago, the rewritten version left beta 10 years ago), and longevity and backward compatibility are key values for the developers

      * A single-file Tiddlywiki is a single file that only requires a web browser to be used (e.g., you can email it to someone and they can just open it)

      * Tiddlywiki is extremely customizable, much more than obsidian. It's almost hard to describe, but you can make very interesting things with just basic knowledge about html and css.

      To cite myself:

      > the problem with TiddlyWiki is that it's hard to describe since its so flexible. I have a few local tiddlywikis that I use for catalogues and note taking/knowledge base. The note taking was inspired by another HN comment [3] that introduced Drift [4,5], which includes features such as tabs for backlinks, keywords, and freelinks. But you may also find the Projectify edition [6] interesting or one cloning Roam Research [7].

      [3] https://news.ycombinator.com/item?id=25305527

      [4] Source: https://github.com/bmann/drift-tiddlywiki-template/tree/mast...

      [5] Demo: https://ramirosalas.com/

      [6] https://thaddeusjiang.github.io/Projectify/

      [7] https://rr-tw5.github.io/

    • jodrellblank 4 days ago

      Joe Armstrong of Erlang fame was a big fan of tiddlywiki, and he met up with the creator to give a talk together about tiddlywiki: https://youtube.com/watch?v=Uv1UfLPK7_Q

      “Joe Armstrong & Jeremy Ruston - Intertwingling the Tiddlywiki with Erlang | Code Mesh LDN 18”

    • dalmo3 6 days ago

      The tiddlywiki site is a tiddlywiki document. That alone tells you the difference.

      • scubbo 6 days ago

        That one is optimized to be a web site and the other is optimized to be a personal note-taking platform? ;P

      • kvark 6 days ago

        A markdown document (e.g. from Obsidian) can be hosted as easily.

        • karencarits 5 days ago

          Yes, but the tiddlywiki file is the entire wiki. You've perhaps tried the dataview plugin for obsidian? Tiddlywiki is built on a similar idea, but much more flexible and powerful. However, tiddlywiki doesn't support in-text definition of fields (as far as I know)

    • Groxx 6 days ago

      It's a single-file self-hosting wiki.

      Rather different from a closed-source desktop file editor.

ibdf 7 days ago

I am a big fan of Notion but lately it's like they have been asleep on the driver seat. If they only offered custom extensions I think they would do so much better. I have recently switched to Obsidian but I am not fully committed yet, so i will give this a try.

My only critic so far... It seems you copied one of my least favorite "features" from Notion which is to force a default "Title" column for the tables. I find that most of the time I don't need a Title column, but I can't turn it off nor can you change it's type.

  • replwoacause 6 days ago

    This has always bugged me about Notion as well.

  • mayne 5 days ago

    It's okay to change the type of title field. I will patch an update.

csomar 6 days ago

Wait a second. Do you mean there is no sync possibility? Because the browser storage is far from reliable. I don't see this as "safe" if the data is not synced or backed up somewhere else.

f0c1s 6 days ago

I have been making notes for a decade now. I have moved through plain txt files, no extension (linux style) txt files, CherryTree, SimpleNotes, LogSeq, Notion, GitHub Pages, Obsidian and may be more.

I have moved through phases of putting notes in physical notebook and scanning. I have 10s of scanned notebooks.

I have taken digital notes via stylus, via wacom pen and tablet, Samsung notes (best note taking app with stylus), a bunch of linux apps (xournal, xournal++ etc) and more...

I have written notes in pure html.

I have written personal app for taking notes in browser and storing it in postgres.

There is nothing better than text + git. Markdown is second.

My current configuration is: text/markdown + git + vs code + (plain) obsidian + plantuml + mermaid + local-git-server/github/gitlab etc.

  • remram 5 days ago

    While I don't disagree with the sentiment, an important feature for me is being able to read/write/search notes on mobile.

eternityforest 2 days ago

This looks really cool! The only thing that seems to be missing is sync, since SQLite doesn't work well with SyncThing et al.

Something like cr-sqlite could potentially fix that though, although I'd prefer just plain markdown files for the backend.

  • mayne 2 days ago

    I've tried it, but it didn't work well together, still looking for a solution, CRDT is the hard part, haha.

huevosabio 6 days ago

Tangent!

I really wanted to like Notion but it's not smooth enough for writing. The cell system makes it clumsy.

I prefer to write on markdown files because it's much faster and I can do it on my text editor of choice. I like obsidian because it's basically that with a bit of extras.

But then I lose the concurrent editing.

I want Google Docs meets obsidian type of environment. And I am yet to find it.

If any of you know of one, please let me know!

  • fivestones 3 days ago

    I want this too. I add one thing: I want the ability to search/read/add to notes on both desktop and on mobile in a native app. I have yet to see a PWA that has the fluidity, stability, and ease of use of a well made app.

  • kvark 6 days ago

    I feel quite aligned on this. I would push further and say that I need a Markdown-based Google Wave reincarnation!

    But if you want collaborative markdown in general, there are solutions like Hack.md

  • JellyBeanThief 6 days ago

    Anytype isn't there yet, but you should keep an eye on it

drio0 7 days ago

Congrats on the effort. Looking forward to have this expanded or further developed. The reason why I still use Notion is definitely for their database feature and an usable mobile app. It’s hard coming back to desktop-only

Rovoska 2 days ago

This post complains about Notion being slow, but when I try out the demo myself Eidos is slow as molasses. Forms are populated full seconds after I write in them, and I accidentally created several tables on accident because they again took multiple seconds to exist.

  • mayne 2 days ago

    I sorry for your experience. It works smoothly for me and hasn't been fully tested yet

wwweston 6 days ago

This looks cool. At first pass, I have one big question: are there any facilities or even just plumbing for syncing between installs / front-ends?

SaaS/cloud approaches have real downsides in terms of ownership but the big upside is access from multiple points/devices (home desktop, browser on office machine, personal laptop, mobile device, etc). Obviously SaaS isn't the only way to do that, centralizing around self-hosting or some syncing feature can work too. Anything like that on the radar?

  • mayne 5 days ago

    I carefully designed the architecture, which is very flexible. The "backend" is currently running on web worker & service worker. It should be possible to deploy it to a web-standard runtime environment for self-hosting.

    P2P synchronization based on CRDT is on the roadmap.

    • fivestones 3 days ago

      Sweet. The first question I had when reading the readme was, “Is there CRDT?”

nanovision 3 days ago

This looks amazing. Just joined your discord channel.

Please make it no-code friendly for one-click easy installation if possible ( Similar to how WordPress or Drupal can be installed )

obeavs 6 days ago

Wow! Really awesome local-first work on a modern stack. Would love to know more about your experience with Glide and Lexical.

buildj48 6 days ago

Very nice work Do you mind elaborating on how this differs from “outline” and “anytype”? I think a comparison table on the website on how this solution differentiates itself from competitors is going to be helpful. Also, what’s going to be the pricing model?

  • mayne 6 days ago

    Thanks for your advice. Eidos is more like a PDM tool rather than a PKM tool, but it can be used as a PKM with some extensions, just as the introduction says, it's an extensible framework.

    I've used the tools you mentioned and more. None of them have a powerful table, which is one of the reasons I decided to create Eidos. Eidos can handle large amounts of data like Excel. Anytype/Outline cannot do this.

    I plan to follow Obsidian's model, with the core being always free. here is some plans: - publish service (subscription-based) - peer-to-peer data synchronization (One-time payment, like Resilio sync) - an extension store that benefits developers (still a rough idea in my mind)

    • ukuina 5 days ago

      If you allow dependency-included self-host (preferably via an application wrapper like Electron where I can use a firewall to control which outbound connections are allowed), support mobile devices, and charge a one-time fee for p2p sync (decentralized, like SyncThing), this will be an instant buy for me.

      Thought: Can you add a logout button?

      Also, please consider a name change so SquEnix doesn't sue you out of existence!

      • mayne 5 days ago

        What you want is also what I'm working on. Eidos is a personal open-source project focused on individual needs. It respects everyone's privacy. It does not collect any information. Since there is no account system, no need for a logout button

        I really love this name. If I use Eidos Space, will there be trademark issues?

curtisblaine 6 days ago

Some questions:

1. How to use extensions? I can create one (it looks like a javascript function getting some context and one argument) but I have no idea how to invoke it. I expected to be able to invoke them on selected text.

2. Does it sync on other computers / browsers or is it only local?

  • mayne 6 days ago

    Sorry for lacking documents and guidance. When you enable a script, you can trigger it by typing 「/」 in command palette (cmd + k). Currently, the selected text only works with the prompt. You reminded me that the script should also be able to handle selected text, and I will add this feature.

    Sync is on the roadmap.

  • neodymiumphish 6 days ago

    It seems you’d need to handle sync by pointing your database at a local path and sharing that path through some cloud option.

throw21378912 6 days ago

This appears to be using a version of babel that allows ACE FYI.

@babel/traverse <7.23.2

https://github.com/advisories/GHSA-67hx-6x53-jw92

  • lioeters 6 days ago

    > Users that only compile trusted code are not impacted.

    Doesn't Babel typically only compile your source code, and not what's in node_modules? I guess it depends if you're compiling single files, leaving import statements as they are; or creating a single bundle for the browser that includes external dependencies. For the latter, I imagine there's a chance some malicious package could exploit this.

kaz-inc 6 days ago

How do you deal with iOS deleting PWA data when unused? I'm building an app that relies on indexedDB, which afaik is the only persistent storage a PWA can access.

  • mayne 5 days ago

    Currently, it can only run on high-version chromium-based browsers, and it's compatible with Android, but not iOS. Apple is killing web apps.

pants2 6 days ago

Could one use this to say host a public docs site or blog? Does it have a backend server that needs to run or can I just upload a folder to S3 and have it work as a static site?

neets 6 days ago

The lack of note linking is a deal breaker for me.

Also when it comes to LLM stuff, I would like to hook up AI's via a OpenAI Compatible LLM such as LiteLLM and Ollama

ilrwbwrkhv 7 days ago

This is fantastic work. Will play around with it!

minraws 6 days ago

Btw the site on mobile forces horizontal scroll, could you improve it a bit It makes it very hard to read the landing page atm.

:)

rufius 6 days ago

Is there a brief blurb about how this differs from Obsidian? Just curious mostly.

  • mayne 6 days ago

    - Eidos has an Airtable-like table, but Obsidian does not. - Eidos and Obsidian are both file-based. - Eidos is based on SQLite, and Obsidian is based on Markdown.

euphetar 6 days ago

Please provide a feature to load data from notion export

  • mayne 6 days ago

    I developed an extension to implement the import function, it's still in development and lacking documentation. You can try it out, but I'm not sure if there are any bugs. Feel free to join our Discord to stay updated.

    https://github.com/mayneyao/eidos-extension-importer

tonymet 6 days ago

What’s the shortcoming in iOS that has spawned a million notes clones

  • OJFord 6 days ago

    Yes, much like the shortcomings of Windows 95 that spawned a million Notepad clones in the form of IDEs, code-oriented editors, and Office (née Works?)-like suites.

    • tonymet 4 days ago

      the notepad clones didn't require a storage engine. they saved files using the OS storage API

  • beardedwizard 6 days ago

    It can't handle anything resembling a large note, and can't link to other notes meaningfully.

  • ukuina 5 days ago

    Apple Notes has sync issues with large collections, and backing up to anything except iCloud is a pain.

  • nullwarp 6 days ago

    I mean the obvious one is cross platform support? People who don't want or have an icloud account?

    Contrary to your belief there are still people out there living outside the apple bubble.