I rely on a folder hierarchy for my notes structure. I often have some note organisation patterns which involve moving files around, which will mess with URLs when published. Quartz is what Iā€™m currently using to publish notes, that will maintain internal links fine, but anything that remembers URLs externally (browser histories, bookmarks, search engines, links) is going to have a bad time.

I wanted to minimise adding extra effort to my current note taking, and was hoping I could get away with just folder paths and filenames or titles for URLs, but I think Iā€™m going to try get into the habit of adding slug:/projects/some-project in my public markdown frontmatter yaml. e.g. /projects/some-project will always get to the some-project page, even after I moved it to the archive on completion.

Iā€™m being lazy, thereā€™s definitely a better way to do this, at least for projects, using tags and/or a custom plugin with quartz to programmatically generate urls to my requirements. However, just manually generating and adding the slug in the markdown at least has the benefit of not having to change tags, or solve the programmatically generate urls to my requirements problem if/when I move away from quartz. I can also still programmatically regenerate the slugs, by parsing and updating yaml frontmatter if I need to in future.