Everything else is a Python package with a CLI, dockerised for portability, and written entirely by me to support my workflow.
I am absolutely sympathetic to the "I want a tool not a hobby" idea of using prebuilt software, and indeed I have tried many of them (including every one I have seen linked on HN), however I have found that building my own automation has really helped me to think carefully about how I use my Zettelkasten and what it implies for my own thought process.
This reply probably falls into the category of "unhelpfully helpful advice", but that's what has worked for me personally.
I've always struggled with mapping any note organization mapping into strict directory structure with ascii file names being the only meta-data. I'm currently using Trilium Notes which solves most of these by using SQLite instead of filesystem.
Zettel are named as follows: z{%Y%m%d%H%M%S}_{slugified title}.md
Tags are formatted as +{hyphenated tag name}.
Scripts parse all the Zettel, construct a bipartite graph of tags and Zettel, and populate tables in the index with lists of Zettel under each tag, a visualisation of the graph, various other meta statistics etc.
The point (for me) of my Zettelkasten is that through links and tags, the structure of the notes is emergent rather than dictated a priori.