Obsidian task management with Dataviewjs, Templates, Daily Notes
Based on Nicole van der Hoeven's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Enable Daily Notes, Templates (core), and Dataview, and confirm they’re active in Obsidian settings.
Briefing
A practical Obsidian setup can turn scattered checkbox tasks into a single, automatically populated “tasks due today” list—without manually hunting through notes. The core move is combining three built-in and plugin tools: Daily Notes to generate each day’s page, Templates to pre-fill that page with a task section, and Dataviewjs to dynamically pull in all unfinished tasks tagged with a due date.
The workflow starts by enabling the three essentials: Daily Notes, Templates (the core plugin, not the community Templater), and Dataview. With Templates, a dedicated Templates folder is created and set as the default storage location. Then a daily template is authored. It uses Obsidian variables so the daily note’s title becomes the H1 header, and it includes sections such as “Tasks due today” and a “Log” area for freeform notes.
Next, Daily Notes is configured to use that daily template by default. Existing daily notes won’t retroactively update, so the template is applied once via the command palette (Command + P). After that, new daily notes automatically inherit the structure. A calendar view can be used to demonstrate the behavior: creating a note for a past date pulls in the same template immediately.
Tasks themselves are created anywhere—meeting notes, project pages, or other markdown files—by writing a checkbox and attaching a due date (e.g., “April 11th”). The key is that the due date is stored in a way Dataview can filter on later. On the daily note, the “Tasks due today” section is powered by a Dataviewjs query. Initially, the query may be tested with a hard-coded date to confirm it returns the expected set of unfinished tasks. If Dataviewjs queries are disabled, they must be enabled in Dataview settings.
Once the query works, templates take over. The hard-coded date is replaced with a template variable representing the daily note’s date in a strict YYYY-MM-DD format, matching Obsidian’s daily note naming. The Dataviewjs block is then pasted into the daily template so every day’s page automatically fetches the correct tasks. When a task checkbox is completed on a daily note, it disappears from the Dataview results because the query filters for uncompleted items.
The result is a system where tasks can be captured at the moment they arise, yet each daily note reliably shows the list of what’s due that day. The approach is presented as effective for date-sensitive tasks, with a caveat: for time-sensitive scheduling, a smart calendar blocking system like Reclaim may fit better, while Dataview remains a strong option for many users.
Cornell Notes
The setup uses Obsidian’s Daily Notes plus the core Templates plugin to pre-build each day’s page, then Dataviewjs to automatically list all unfinished checkbox tasks whose due date matches that day. Tasks can be created in any note by adding a checkbox and a due date. A Dataviewjs query filters for tasks that are not completed and whose text includes the target date, and it updates live when checkboxes are ticked. Templates replace a hard-coded date in the query with the daily note’s date variable (formatted as YYYY-MM-DD), so the “Tasks due today” section works every day without manual edits. This matters because it turns scattered task capture into a consolidated daily dashboard with search-like behavior.
Why create a Daily Notes template instead of relying on blank daily pages?
How do tasks become eligible for the daily “due today” list?
What role does Dataviewjs play, and why is enabling JavaScript queries necessary?
Why test the Dataviewjs query with a hard-coded date first?
What date format must the template variable use for the query to match daily notes?
How does completing a task affect the daily list?
Review Questions
- What three plugins are required for the system, and what does each one contribute?
- How does the Dataviewjs query determine which tasks belong on a given daily note?
- Why must the date variable in the template use the YYYY-MM-DD format?
Key Points
- 1
Enable Daily Notes, Templates (core), and Dataview, and confirm they’re active in Obsidian settings.
- 2
Create a Templates folder and set it as the default Templates folder so daily templates have a consistent storage location.
- 3
Build a daily template that uses Obsidian variables for the daily note title and includes a “Tasks due today” section.
- 4
Configure Daily Notes to use the daily template by default, then apply the template once to existing daily notes via the command palette.
- 5
Create tasks anywhere using checkboxes and attach a due date so Dataview can filter them later.
- 6
Use Dataviewjs to query for uncompleted tasks whose text includes the target date, and enable JavaScript queries if results don’t appear.
- 7
Replace hard-coded dates in the Dataviewjs query with the daily note’s date variable formatted as YYYY-MM-DD to make the system work every day automatically.