😍 I Used Claude to Build a Beautiful Journaling Dashboard in Obsidian


Prefer to read (or listen to) this newsletter in your browser? Click here.

💡 The Big Idea: Daily Questions + DataviewJS = 😍

I’ve been journaling in Obsidian ever since I first started using the app over 5 years ago. The Daily Notes make it perfect for this, though I’ve crafted my own workflows using a method called Daily Questions that measure my intentions rather than the outcomes.

I explain the whole process here, but the short version is this:

  • I have a Shortcut that prompts me for a score from 1-10 for prompts like Did I do my best to love my wife? and Did I do my best to create something?
  • Those responses get appended as values to tags inside my Daily Note like #dailyquestions/wife
  • I visualize the trend data using a plugin called Tracker that shows me line graphs of my scores over time as well the averages for the time period I set

But in the last two weeks, I rebuilt this whole workflow from scratch using Daily Note properties instead.

In this newsletter, I’m going to show you how I made the switch.

But first we need to talk about why.

The Future is Properties

The biggest thing to happen to Obsidian last year was the release of the Bases core plugin. This added the ability to view, filter, and edit data from properties attached to your Obsidian notes.

While Properties had been around for a while, the release of Bases made it clear just how important these were going to be in Obsidian going forward.

The minute that I started playing with Bases, I knew the writing was on the wall: my tag-based journaling workflow was going to need to be replaced.

I’ve been dragging my feet with moving everything to Properties, but got inspired a couple of weeks ago when someone in The Library mentioned a pretty cool plugin called Life Tracker that allowed you to create a dashboard in Bases to visualize your property metadata.

At first glance, I thought I had struck gold. I was able to create a pretty impressive looking dashboard inside of a Bases view that showed me historical data on all my journaling prompts in a cool-looking line graph, and could even select from a few different colors to make it a little more visually appealing:

Pretty quickly though, I started to hit the glass ceiling with this approach. As I started looking for ways to customize these graphs, I recalled Tim Miller writing about visualizing data using DataviewJS. Unfortunately, I know nothing about writing DataviewJS and quickly got lost in the code explanations.

But then I had a crazy idea: could I get Claude to help me write the code to visualize the data the way I wanted?

Short answer: Very much yes.

Building My New Daily Questions Dashboard

The graphs I built this way were pretty straightforward: they have a solid line that shows my Daily Questions scores for the specific properties the scores are assigned to. There’s a little bit of flex (or tension) in the line graph, and the dotted line represents the average score for the time period shown on the graph.

This is already way better than my old Tracker-based dashboard, but then I was also able to add a button to each code block in Canvas that allows me to select different time periods to display:

So now I no longer have to update the date values in the Tracker code, and I can just select the time period I want from a drop-down menu. All the data instantly gets updated, and the averages on the bottom are calculated just from the visualized data that’s being shown in the graph.

I’m actually working on a video that walks through all the code, but here it is if you want to download it yourself. Just know it’s still a little bit of a work in progress.

Then I had another crazy idea: could I combine these all into one graph and toggle the individual properties on or off?

Again, yes.

So I have another combined code block which shows each property as a different color and the averages below the graph for each score being shown:

You can toggle the checkboxes at the top to choose which lines show up on the graph, and again, there’s a button to display different time periods here.

And all of these graphs render incredibly fast (much faster than my old Tracker graphs did).

I’m still tweaking this one to get it just right, but once I do, all of this will be added to the next version of LifeHQ 😉

Setting Up the Note Properties

Again, note properties are the key to making this all work. Each graph up above is simply showing the numerical values associated with a particular property over time.

Here’s what it looks like at the top of a Daily Note:

In order to update these, I also had to modify my Daily Questions Shortcut I walk through here. The basic concept is the same:

  • I answer prompts with numbers from 1-10 based on my intentions
  • Those responses get saved as variables
  • The variables get written to the current Daily Note using Shortcuts actions from Actions for Obsidian

The difference is that it’s no longer a text block that gets inserted at a placeholder. For this, I had to first create a dictionary file in the Shortcut with the key value pairs I wanted to set, then set the properties for the current Daily note according to that dictionary:

This part is a little bit technical, and I’m actually working on a video for this. But the short version here is that this Set Properties action adds my responses to the properties in the current Daily Note in a way that the workflow at the end of the day is exactly the same.

(If you want to play with the Shortcut, here's the link.)

The Bottom Line: Claude is great at writing DataviewJS code.

I kinda can’t believe what I was able to accomplish here. This is the ideal version of my Daily Questions Dashboard, and has given me fresh inspiration for additional dashboards as well (I’m currently working on an updated habit tracking dashboard).

I’m still a little bit nervous about sharing code I didn’t write myself, but I’ve learned quite a bit from the process as Claude does a great job of commenting in the code and explaining the changes it makes with each revision.

I’ll be sharing this in the Practical PKM cohort inside The Library first, then I’ll share it publicly once I know it’s 100% bulletproof. But the cool part about this is that you can make it your own simply by changing the property you want to track in the code. A simple find and replace and you can customize these graphs to work with whatever properties you want to track instead.

— Mike

P.S. It's not too late to join the live Practical PKM cohort kicking off today inside The Library! I'll be sharing the done-for-you version of this with the cohort in week 5 when we cover journaling and reflection. Join now for only $147.

Practical PKM

A weekly newsletter where I help people apply values-based productivity principles and systems for personal growth, primarily using Obsidian. Subscribe if you want to make more of your notes and ideas.

Read more from Practical PKM

Prefer to read (or listen to) this newsletter in your browser? Click here. 💡 The Big Idea: My 5 best books from 2025. This year, I read 38 books. Almost all of them were non-fiction and fall into the self-help or personal development genre. Many of them were for the Bookworm podcast I do with my friend Cory Hixson where we talk about a different productivity book every two weeks, but a lot of others I read just because I enjoy learning new things and wrestling with big ideas. In this...

Prefer to read (or listen to) this newsletter in your browser? Click here. 💡 The Big Idea: Subtraction Beats Addition. As 2025 comes to a close, it's natural to reflect on the year and set intentions for what changes you're going to make. Most people set intentions like, "I'm going to lose 15 pounds," "I'm going to write my book," or "I'm going to finally start my side hustle." It's human nature to think that if we just did something additional, then our situation would change for the better....

Prefer to read (or listen to) this newsletter in your browser? Click here. 💡 The Big Idea: How I Built a Master Content Calendar for All My Writing Projects in Obsidian. This week, I spent some time figuring out how to create a master content calendar in Obsidian. I wanted something that would show me all the newsletters, blog posts, video scripts, and other broadcast emails I needed to send all in one place. But this isn't what I set out to build. This entire project started with what I...