SilverBullet: a self-hosted personal knowledge management system for people with a hacker mindset

zef@lemmy.world to Selfhosted@lemmy.world – 426 points –
SilverBullet
silverbullet.md
82

You are viewing a single comment

This looks awesome and exactly what I have been looking for.

One question about implementation just out of curiosity, is there any database? I'm worried that when it gets to hundreds or thousands of pages querying things becomes slow if it's just scanning files.

Yes, it’s using SQLite under the hood in Online mode and IndexedDB in the browser in Sync mode.

SQLite should be more than enough, I can't find the file on the space folder though, is it created inside the docker container on server startup? Is there a reason not to store it in space so it doesn't need to be regenerated each time?

It’s .silverbullet.db in the root of your space folder. Note that because there’s no schemas in SB, SQLite is used as a fancy key-value store and many queries become somewhat (but not very) optimized table scans. In this SQLite file you’ll see a “kv” table that contains everything.

I feel like facepalming myself to death for having asked such a stupid question before running an ls -a on the folder.

One last question, I've been reading on Plugs because there's one thing that I use regularly that I think doesn't exist and want to know if it would be possible for me to implement, it's called plantuml. Essentially it's a plug that would act on a specific block of code, like the latex one, and would use POST the code to a configurable url, get an image as return and display that instead.

Yes this is doable, with the caveat that I have not invested a lot of time in documenting all the plug APIs etc. You can have a look at the mermaid plug to get a sense of how this can be done, it will be similar except that you — indeed — may end up having to post something to a URL somewhere rather than render the thing on-the-fly with a JavaScript library you load externally: https://github.com/silverbulletmd/silverbullet-mermaid

Actually mermaid seems to be able to do all I'm doing with plantuml and syntax is very similar, might give that a try before since that one would also work in offline mode.

That said, I have not tested this with hundreds of thousands of notes (I have close to a thousand myself). No performance issues there, but…

I said hundreds or thousands, I don't expect to be creating hundreds of thousands of pages, but from your reply on the other thread SQLite should be more than capable of handling this scale.

Nice knowing that you have close to a thousand and it's still fine. It will take me a long time to get to that amount of pages, but if I can get started with this it seems like an awesome way of storing knowledge bases, so I expect it will grow quite rapidly as I migrate all of my different things into it.