An Obsidian homepage dashboard without code
clocklayout: inlinebadge: countA home note is the page you see first: the time, today's note, how full the inbox is, a way into each part of the vault, and what is coming up. Usually it is a note full of dataviewjs. Here it is four Dashy blocks, each a few lines of YAML, and every number on it updates as the vault changes.
1The day and the clock
Make a note for the home page, say Home.md, and start with this block.
```today
clock: true
daily: true
weekly: true
```
clock: trueHours and minutes above the date, ticking. 12 or 24 hours follows your language.clock: secondsadds the seconds.daily,weeklyLinks to today's note and this week's.monthly: trueadds the month's.
The folder and the name format come from the Periodic Notes plugin or the core Daily notes plugin, or from the folders set in Dashy's settings. With none of them, the daily note is YYYY-MM-DD at the vault root. A note that does not exist yet is still linked, dimmed, and a click creates it.
2A line of counts
Number cards take room. For a header, layout: inline puts the same numbers on one line of text.
```stats
layout: inline
items:
- { label: notes, agg: count }
- { label: in the inbox, source: Inbox, agg: count }
- { label: diary days this month, source: Diary, agg: count, period: month }
- { label: books this year, source: Reading, date_field: date_read, period: year, agg: count }
```
label: notes, agg: countNosource: every note in the vault.period: monthOnly notes dated this month, by the date in the note's name.date_fieldreads the date from a property instead, as on the books item.- Narrow paneThe line wraps between items, never inside one.
Inline keeps icon, unit and the compare change, but not trend or sub. Leave those on, and the block warns that they are not drawn.
3Tiles for your folders
One tile per part of the vault, with the number of notes in it.
```tiles
items:
- { label: Inbox, path: Inbox, icon: 📥, badge: count }
- { label: Diary, path: Diary, icon: 📔, badge: count, period: week, sub: this week }
- { label: Reading, path: Reading, icon: 📚, badge: count }
- { label: Projects, path: Projects, icon: 🗂, badge: count, accent: true }
```
path: InboxA folder. The tile opens its folder note,Inbox/Inbox.mdorInbox.mdnext to the folder. Without one, a click shows the folder in the file explorer.badge: countThe number of notes in the folder, subfolders included. An empty folder shows 0, not nothing.period: weekNarrows the badge to notes dated this week.tagandwherenarrow it too.pathCan also be a note, orFile.base#Viewfor a view of a base.
Add image: to a tile for a picture above its label: a path in the vault, a [[wikilink]], or an https:// address. See the variations below.
4What is coming up
The days to a holiday, a birthday and a passport's expiry. The last two are read from notes, so they stay right without edits.
```countdown
items:
- { label: Holiday, date: 2027-01-20, icon: 🏖 }
- { label: Anna, field: birthday, repeat: yearly, source: People, where: "name = Anna", icon: 🎂 }
- { label: Passport, field: expires, where: "type = passport", icon: 🛂 }
```
How the birthday and the passport cards find their dates, and why where is there: countdown to a birthday.
The whole note
All four blocks, ready to paste into an empty note. Change the folder names to yours.
```today
clock: true
daily: true
weekly: true
```
```stats
layout: inline
items:
- { label: notes, agg: count }
- { label: in the inbox, source: Inbox, agg: count }
- { label: diary days this month, source: Diary, agg: count, period: month }
- { label: books this year, source: Reading, date_field: date_read, period: year, agg: count }
```
```tiles
items:
- { label: Inbox, path: Inbox, icon: 📥, badge: count }
- { label: Diary, path: Diary, icon: 📔, badge: count, period: week, sub: this week }
- { label: Reading, path: Reading, icon: 📚, badge: count }
- { label: Projects, path: Projects, icon: 🗂, badge: count, accent: true }
```
```countdown
items:
- { label: Holiday, date: 2027-01-20, icon: 🏖 }
- { label: Anna, field: birthday, repeat: yearly, source: People, where: "name = Anna", icon: 🎂 }
- { label: Passport, field: expires, where: "type = passport", icon: 🛂 }
```
Dashy draws the note; it does not choose which note Obsidian opens first. If the Homepage plugin does that for you, keep it and point it at Home.md.
Ask your agent
With Dashy's skill installed, an AI agent can write this from a request in plain words: it looks at your property names and folders first, then writes the blocks. Open the note in Reading view and paste any error a block shows back to the agent.
Make a new note called Home my home page. Put the time and today's date at the top, with links to my daily and weekly notes. Then a line of counts (all my notes, notes in the inbox, diary days this month, books read this year), a tile for each of my main folders with how many notes it holds (for the Diary, only this week's), and the days left until my holiday on 20 January, Anna's birthday and my passport expiry.
What comes back is something like the note above. The agent's YAML may differ from the guide's, with your own property names and labels, but it should do the same, and this guide is the reference to compare it against. More on working with an agent.
The same home note with dataviewjs
The usual setup: the Homepage plugin opens a note, and the note is a script.
```dataviewjs
dv.header(2, moment().format("dddd, MMMM D"));
const all = dv.pages().length;
const inbox = dv.pages('"Inbox"').length;
const month = dv.pages('"Diary"')
.where(p => p.file.day && p.file.day.hasSame(dv.luxon.DateTime.now(), "month")).length;
dv.paragraph(`${all} notes · ${inbox} in the inbox · ${month} diary days this month`);
```
- Needs Enable JavaScript queries in Dataview's settings. It is off by default.
- The date is printed once. A ticking clock is a timer you write and clean up yourself.
- Tiles with counts and countdowns are more code each, usually HTML built in the script and styled with a CSS snippet.
- A mistake in the script shows a JavaScript error, or nothing.
| Dashy | dataviewjs | |
|---|---|---|
| Live clock | clock: true | A timer you write |
| Today's notes | daily, weekly, monthly | Build the paths yourself |
| Line of counts | layout: inline | The script above |
| Folder tiles with counts | badge: count | HTML and a CSS snippet |
| A config mistake | A message naming the key | A JavaScript error |
| What you install | Dashy | Dataview, JavaScript queries on |
Variations
Tiles with covers
A picture above each label, from the vault or the web.
```tiles
columns: 3
items:
- { label: Reading, path: Reading, image: Attachments/books.jpg, badge: count }
- { label: Projects, path: Projects, image: "[[desk.jpg]]", badge: count }
- { label: Inbox, path: Inbox, image: https://example.com/inbox.jpg }
```
This week against last
compare works on the inline line too: the change sits after the label.
```stats
layout: inline
items:
- { label: diary days this week, source: Diary, agg: count, period: week, compare: true, better: up }
- { label: in the inbox, source: Inbox, agg: count, icon: 📥 }
```
A greeting instead of the date
title replaces the date line. The clock and the links stay.
```today
title: Good to see you
clock: seconds
daily: true
monthly: true
```
A tile for what is left to read
The badge counts only the notes that match where.
```tiles
items:
- { label: To read, path: Reading, icon: 📚, badge: count, where: "status = to-read" }
```
If a block shows an error
A block that cannot do what you asked says so, inside the note. The ones you are likely to see here:
- Nothing is filed under
Inbox. A counted tile'spathor a card'ssourcenames a folder with no notes in your vault. Use your own folder names. trendis not drawn withlayout: inline. Inline has no room for a sparkline. Removetrend, or switch back to cards.clockexpects true, false, minutes or seconds. Something likeclock: yeswas written. No clock is shown until you fix it.- None of the selected notes has a name starting with a date like YYYY-MM-DD. A
periodneeds dated notes. If the names write the date another way, adddate_format: DD.MM.YYYYon thestatscard or the tile that counts them. Without it, both read the day format set in the Daily notes or Periodic Notes settings. Adddate_fieldif the date lives in a property.
Related guides

Days left and the age they turn, from the date in a person's note.

One bar per year from your book notes, with a goal line.

Counts, streaks and a year of days from daily note checkboxes.
Dashy is in Obsidian's community plugins. Search for Dashy, install, enable, then paste the note above.