The story behind Gardener

Bharat Kalluri / 2020-02-20

Code is over at GitHub


  • gardener link to create markdown links and to create back links for all the files in that directory.
  • gardener init to create project
  • gardener tend to list out text which could have been links. Maybe even change them for you in the future

This is mostly meant for personal use. And currently an alpha project


I wanted to start working on my own digital garden as my blog felt ignored and if I had to put anything on my blog, it should go through a lot of planning/iterations. So, the number of articles I publish in general are very less. On top of this, if I happen to go back and read a post I wrote a couple of months back and I find it stupid (which I most probably will) then I would delete that post. So, my blog was a barren land.

Then I saw nikitavoloboev's absolutely mind blowing wiki, if you have not seen this make sure to check this out. This is the one resource which made me change my mind as to what public notes mean and why they are healthy. So I did the same thing ;-). Started a new repo and plugged it in with gitbook. But there are some problems with gitbook.

  • I should go and create/edit/delete using the gitbook UI. Not from the text editor (I am sure I can do it from the text editor, but the recommended approach is through the UI)
  • No dark mode in free plan
  • Not mobile friendly enough. I wanted to open up an android app and start typing, that was not the case.

But these did not push me hard enough to create a solution, I was using what I already had. Then I heard about Obsidian! The wiki links idea was great! Although the graph looks cool, I did not know if it offered any real value for me since my note collection is not that big yet. But I was in love with Obsidian. But Obsidian is not open source. They have a free plan for now, I really hope that does not change anytime soon.

Which brings me to another point, why should our note taking system be tied up to a service/ website. If we are writing in pure text, our system should be editor independent.

So I started writing a static site generator 🤣 , my genius idea was that, if at all we had a static site generator which supported wiki links natively, that would solve all the problems! Started a project called gardener which was initially started using go-lang and it basically converted markdown files to html and natively supported wiki-links. To be fair, it was a success. It did work. But it was overkill.

Because I did not know GitHub has a feature in which you can basically write markdown and it will publish a website using Jekyll. Another idea which I did not know about was a part of the common mark spec's Link reference definitions, I came to know about these features after looking into jevakallio's awesome project called Foam Bubble. I loved the way he approached the problem, his idea was to use small, modular tools to solve this problem. Which was exactly what I was looking for! But he tied the idea to visual studio code. Because foam is a collection of very feature rich VS code extensions which work together for a cohesive experience.

I did use foam for a while, my notes repo still is using foam's template. But I think a digital garden solution should not be tied up to an editor. If I want to use vim (vim has [vimwiki] (Although I am not sure if it serves the same purpose)) or anything else, you should be able to. This is where gardener comes in again.

I could be using obsidian or VS code, but to push these markdown files to GitHub, I need to somehow convert the wiki links to actual markdown links. One way of doing it is that you make a copy of the folder, actually replace wiki-links with markdown links and push that to GitHub. Or, we could do what foam does. Use the link reference common mark spec and generate common mark complaint link references from wiki links. Foam currently does it using a vs code extension. The initial version of gardener was to make it a command line tool. Run it in your notes folder before you push your notes to GitHub, or better make it a pre commit hook so that before you push gardener makes sure all link ref's are up to date and you will have a great website up and running in no time.

Another feature which I really like are backlinks. The way I see it, it should just be an optional chunk of markdown you attach to each and every file saying where the file has been referred. This is in the roadmap and will eventually be developed. There should also be a feature to tell if you missed creating wiki-links and it will create for you (it could be a QA format over in the command line application). Renaming of notes and their corresponding wiki links should also eventually be supported. All this features are already supported by obsidian. In fact, I am using obsidian and gardener combo to generate my notes website over at

Follow the development over at GitHub!

Some questions

  • How do we handle multiple files with the same file name? without asking the user to link to the full path?


Subscribe to the newsletter

Spotify album cover

NowReading logDashboardUses