In this note I’m going to describe in as much detail as possible my technical setup, deployment, and workflow. I basically want to be able to add notes via Obsidian on my iPhone, iPad or macbook, and have any formatting, deployment, etc. taken care of via automation. This is a work in progress and I’ll work on it whenever I can, but for now it’s going to be a braindump and probably mainly bulletpoints. I’ll write it out nicely at some point, or not, in which case I’m sorry!

Components:

  • Obsidian app - I use it on iPhone, iPad, MacOS. It’s free to use! My Obsidian vault is backed up in iCloud Drive which allows you to very easily sync between devices. This is also free!
    • If you want to make it easy for yourself and you don’t want to deal with any technical setup, you can simply shell out $8 per month for Obsidian Publish which takes care of everything.
  • Since my vault is backed up via iCloud Drive, any changes I make on mobile are also immediately available on my laptop. I have a local git repository that contains all the files for my personal website, as well as a Python script for copying/processing my entire Obsidian vault (at least, the garden/ folder that is destined to be published on here) which does a couple things:
    • Copies the entire Obsidian vault content from iCloud Drive into my local repository
    • Any media that I include in a note is part of the vault as an actual file, but I clearly don’t want to commit a million pictures of food to my git repo. So the python script:
      • Finds any occurrence where a media file is being referenced by a note;
      • Takes that media file and uploads it to a Google Cloud Bucket (set to public access specifically for my personal website, so anything there is ok to be public).
      • Gets the remote url for each media file that was uploaded and replaces the original local link by the remote url
      • I’m pretty sure the script also cleans up any remote files that are not being referenced by any note, so the only files that are present are files that are actually referenced by a note.
    • Commits the changes to git and pushes to directly to main (who gives a shit) which triggers a build deployment on vercel
    • Vercel then runs the build command npx quartz build with output directory set to public which is basically the entire thing. finishes the whole thing,

What is quartz?

  • I use Quartz to build my digital garden. As can be read on the website:
    • Quartz is a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites. Thousands of students, developers, and teachers are already using Quartz to publish personal notes, websites, and digital gardens to the web.
    • You need to clone Quartz inside your website/digital garden repo in order to build the html files from your vault files, which are in Markdown format. Quartz expects any Obsidian content to be in the personal-website/quartz/content/ folder. At some point I’ll go more in depth here, basically after copying the entire Obsidian Vault from iCloud Drive into the repo (personal-website/garden/), I just create a symlink between the garden/ and personal-website/quartz/content/.