Skip to content

Instantly share code, notes, and snippets.

@dannberg
Last active July 5, 2025 05:38
Show Gist options
  • Save dannberg/48ea2ba3fc0abdf3f219c6ad8bc78eb6 to your computer and use it in GitHub Desktop.
Save dannberg/48ea2ba3fc0abdf3f219c6ad8bc78eb6 to your computer and use it in GitHub Desktop.
Dann Berg's Daily Note Template for Obsidian. Uses Dataview & Templater plugins. Should be saved as a Markdown file in Obsidian. Read the full tour: https://dannb.org/blog/2022/obsidian-daily-note-template/
---
created: <% tp.file.creation_date() %>
---
tags:: [[+Daily Notes]]
# <% moment(tp.file.title,'YYYY-MM-DD').format("dddd, MMMM DD, YYYY") %>
<< [[Timestamps/<% tp.date.now("YYYY", -1) %>/<% tp.date.now("MM-MMMM", -1) %>/<% tp.date.now("YYYY-MM-DD-dddd", -1) %>|Yesterday]] | [[Timestamps/<% tp.date.now("YYYY", 1) %>/<% tp.date.now("MM-MMMM", 1) %>/<% tp.date.now("YYYY-MM-DD-dddd", 1) %>|Tomorrow]] >>
---
### πŸ“… Daily Questions
##### 🌜 Last night, after work, I...
-
##### πŸ™Œ One thing I'm excited about right now is...
-
##### πŸš€ One+ thing I plan to accomplish today is...
- [ ]
##### πŸ‘Ž One thing I'm struggling with today is...
-
---
# πŸ“ Notes
- <% tp.file.cursor() %>
---
### Notes created today
```dataview
List FROM "" WHERE file.cday = date("<%tp.date.now("YYYY-MM-DD")%>") SORT file.ctime asc
```
### Notes last touched today
```dataview
List FROM "" WHERE file.mday = date("<%tp.date.now("YYYY-MM-DD")%>") SORT file.mtime asc
```
@aaccioly
Copy link

I had the same problem described by @Pdfulkar and @victorwoo on ephemeral notes as well.
A good solution is to adapt Victor's approach to add the journaling date to the frontmatter.

E.g.:

---
created: <% tp.file.creation_date() %>
<%*
const journalDate = window.moment(tp.file.title, "YYYY-MM-DD");
%>
journal-date: <% journalDate.format("YYYY-MM-DD") %>
---

Then you can use the Dataview JavaScript API to retrieve ephemeral notes. This also allows you to completely skip the ephemeral note headers when you haven't created or modified any notes on that day.

```dataviewjs
const journalDate = dv.current().file.frontmatter["journal-date"];

const created = dv.pages()
  .where(p => p.file.cday.toISODate() === journalDate)
  .sort(p => p.file.ctime, 'asc');

const modified = dv.pages()
  .where(p => p.file.mtime.toISODate() === journalDate)
  .sort(p => p.file.mtime, 'asc');

if (created.length > 0 || modified.length > 0) {
  dv.span("---");
}

if (created.length > 0) {
  dv.header(2, "Notes created today");
  dv.list(created.map(p => p.file.link));
}

if (modified.length > 0) {
  dv.header(2, "Notes last touched today");
  dv.list(modified.map(p => p.file.link));
}
```

You can also adapt Victor's example above for navigation:

<< [[<% journalDate.clone().subtract(1, 'day').format("YYYY-MM-DD-dddd") %>|Yesterday]] | [[<% journalDate.clone().add(1, 'day').format("YYYY-MM-DD-dddd") %>|Tomorrow]] >>

But I'm a huge fan of the Journals plugin, which makes navigation as simple as:

```journal-nav

```

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment