Using Obsidian if you’re used to using Roam
TL;DR: I used Roam for a long time and found it super helpful, now I want this same useful functionality but with the privacy of local storage only.[1] I was leaving a lot of effectiveness on the table by not doing this sooner, so hopefully by reading this, someone who wants to use Obsidian and not Roam for any reason can save a lot of time and blogspam-sifting with this post.
Summary
This should get you something that works basically the way you expect it to, so the learning curve won’t be too steep if you’re used to Roam. There’s still plenty of scope to tweak this as you like.
So it:
Automatically goes to Daily Notes when you open it, with today’s note open.
The daily note contains:
Today’s date written nicely[2]
Space to write stuff straight away
Backlinks referencing that day’s date are shown.
Tasks due on that day are listed.[3]
Step-by-step:
Do steps 1-12 from here.
Install community plugins ’Calendar″, ‘Checklist’, ‘Dataview’, ‘Tasks’, and ‘Templater’.
Disable the core plugin ‘Templates’.
Enable the core plugin ‘Slash Commands’.
In the settings for core plugin ‘Backlinks’, turn on ‘Backlink in document’.
Daily Notes functionality:
Create a folder somewhere in your vault called ‘Templates’ (or whatever).
Inside that folder, create a note called ‘Daily Note Template’.
Go into the settings in community plugin ‘Templater’:
Assign the ‘Templates’ folder for ‘Template folder location’.
Turn on ‘Trigger Templater on new file creation’
Go to settings for the core plugin ‘Daily Notes’:
Make sure ‘Open daily note on startup’ is turned on.
Select the ‘Daily Note Template’ you just made.
Now you can make your template whatever you want, and the first time you open the app on a given day, it’ll take you to your daily note.
Follow instructions in this post, follow the link to the code to paste into your Daily Note Template.
You can easily create a new daily note for a given date by going to the Calendar (top right area of the screen click the icon) and double clicking any date.
To-do list functionality:
Paste the code in the footnote into the Daily Note Template wherever you want it.[6]
Now you’ll need to quickly learn how to use Tasks by reading this page.
You can make a note called ‘Tasks Due’[7] and write as many reports in it as you like, and it’ll keep itself up to date.
Type /tasks anywhere and select ‘Create or edit task’ just like you’d type ‘/todo’ in Roam. (Or set up a hotkey.)
Bugs
There are probably many. I’ll try to update this with improvements and/or helpful suggestions as I get them.
- ^
I’m sure Roam has developed some great privacy features for those wary of cloud storage, since I last checked on their app. No shade intended to their team, they make a great app. This is just a guide for using Obsidian if you happen to prefer this path over the Roam-with-privacy-enhancements path.
- ^
If you want the whole ‘endless feed of daily notes’, you can use community plugin Daily Notes Editor by Quorafind. I just don’t like the colour of the headings and I can’t change it afaik!
- ^
This needs improvement, I just haven’t got around to it yet.
- ^
I’ll come back to this at some point. Specifically, I’d like clicking that link either to take me to the correct note if it already exists, or CREATE the note if it doesn’t exist, while triggering the Templater action that generates all the nice dynamic content on the Daily Note.
- ^
This improved code means it works properly for future and past-dated daily notes, in terms of showing you what you did on THAT DAY.
```dataview List FROM "" WHERE file.cday = date("<% moment(tp.file.title,'YYYY-MM-DD').format("YYYY-MM-DD") %>") SORT file.ctime asc ``` ```dataview List FROM "" WHERE file.mday = date("<% moment(tp.file.title,'YYYY-MM-DD').format("YYYY-MM-DD") %>") SORT file.mtime asc ```
- ^
#### Over Due ```tasks not done due before <% moment(tp.file.title,'YYYY-MM-DD').format("YYYY-MM-DD") %> ``` #### Due Today ```tasks not done due on <% moment(tp.file.title,'YYYY-MM-DD').format("YYYY-MM-DD") %> ```
- ^
Or what you will.
Thanks for sharing! I’ve definitely had productivity gains from using a similar setup (Logseq, which is pretty much an open source clone of Roam/Obisidan and stores stuff locally as .md files).
Other feature transfers:
If you like outlining, you probably also want the Outliner plugin, maybe the Zoom plugin, and to assign hotkeys for their various commands.
If you want to link/embed blocks, Copy Block Link, Block Reference Count, and others may be of interest
In general, searching the community plugins list for things related to blocks, outlines, and roam will find you potentially useful things.
RE:Footnote #4:
I found today, after following this tutorial (which is great, btw, with some tweaks for personal preference this thoroughly fixes everything I felt missing from Obsidian), that putting the template in both the “Daily Notes” template AND as a “Folder Template” made the yesterday/tomorrow links works as-is, with the file either being visited, or created with the template. My hypothesis is the template you put directly into the Daily Notes settings only triggers when using the “Open Today’s Daily Note” button, so Templater’s “folder template” trigger is needed.
In fact, it seems like the Folder Template is all you need, but I have a hunch that the “direct” Daily Note template might be faster in some cases? It’s probably just a superstition, I don’t know if there’s a good way to test it.
EDIT: To make it immune to what setting you have for here new notes are created, I had to specifiy the full path in the template:
<< [[Daily Notes/<% fileDate = moment(tp.file.title, 'YYYY-MM-DD dddd').subtract(1, 'd').format('YYYY-MM-DD dddd') %>|Yesterday]] | [[Daily Notes/<% fileDate = moment(tp.file.title, 'YYYY-MM-DD dddd').add(1, 'd').format('YYYY-MM-DD dddd') %>|Tomorrow]] >>
The path and the daily note name format have to match whatever you’ve set up for Daily Notes.
Amazing, thanks!