Obsidian HTML dashboard
Links
Previously
In earlier articles, we set up a pipeline to materialize Dataview queries into JSON files, giving us a way to get data out of Obsidian. We also figured out how to get data back in by abusing deep links and mapping them to arbitrary JavaScript functions through Templater.
At that point, what's next?
The Dashboard
As time went on, I started tinkering with markdown-based dashboards. The idea was simple: take those cached JSON query results and combine them with deep links to create interactive dashboards right in Obsidian.
For simple (and short) content, tables and lists worked fine. But when I wanted something richer (like a video playlist) I hit a wall. I spent some time using the Minimal theme's cards block to get more advanced features (and I wouldimagine more optimized rendering than whatever I was going to eventually put together). You can see an example of this hack here.
It worked, for a while. But when your content (rich or not) grows to hundreds or thousands of entries, Obsidian's rendering abilities just give up,
Breaking Out of Obsidian
At this point, I realized it was time to just take those JSON files and run scripts against them outside of Obsidian. No more fighting the editor. No more performance headaches.
That's what this repo does. You can see a live version here with some generic data.
It's a clean separation: Obsidian handles note-parsing and query "materialization", Python (or whatever) generates static HTML dashboards from the JSON, and your browser shows you a real, fast interface.
On click, the obsidian:// type of URI sends the information back to the backend (aka Obsidian)
What's Still Bad
Two big problems remain—worth keeping in mind for the next iteration:
- No live refresh. I have to hit
Win+Qor click the refresh button in the browser to re-run queries. It's not seamless. - Fragile setup. Random Templater scripts, loose Python modules, expected JSONs in specific places—it's not portable. Moving this to another machine would be a pain.
That's where we are. More to come.