NomberFax14 downloadsAdvanced date-based automation for Obsidian: rule-based templates, recurring events, custom holidays, task carryover and built-in productivity analytics.
English · Русский · More plugins by Nomber
A calendar view for Obsidian with built-in daily, weekly and monthly notes and rule-based templates: per weekday, per date, per date range, "last Friday of the month", even/odd weeks and more.
This is a fork of Calendar by Liam Cain, released under the MIT license (see LICENSE). All credit for the original calendar view goes to him; the original README is kept in README.original.md.
nf-calendar, version 1.0.1This plugin replaces Calendar + the core Daily Notes plugin + Periodic Notes (weekly / monthly part). It keeps its own settings for daily, weekly and monthly notes and finds and creates the notes itself.
It does not read or enable other plugins, except for the Import from Daily Notes / Periodic Notes button and a one-time import of older settings from those plugins.
Click a day to open or create its daily note (Ctrl/Cmd+click opens it in a new pane). Click a week number to open the weekly note.
Click the month title (for example "Nov 2026") to switch year, pick a month, or type a specific day. Works on mobile too. Right-click the title still opens the main menu.
., -, or /)Opens a random existing daily note. In the Go to date dialog, Open random note expands the period options; the dice button opens one immediately with your saved settings.
For a daily note the plugin uses, in order: the first matching special rule, then the weekday template, then the default template. Weekly and monthly notes use rules (if enabled for that type) against the first day of the period, then that type's default template.
All placeholders use the note's date (the first day of the period for weekly and monthly notes):
| Placeholder | Result |
|---|---|
{{title}}, {{date}} |
the note's file name (with that note type's format) |
{{time}} |
current time, HH:mm |
{{date:FMT}}, {{time:FMT}} |
the note date with a moment.js format, e.g. {{date:dddd, D MMMM}} |
{{date+1d:FMT}}, {{date-2w}} |
date arithmetic; units y q m w d h s |
{{yesterday}}, {{tomorrow}} |
previous / next day in the note format |
{{monday:FMT}} … {{sunday:FMT}} |
that weekday of the note's week |
{{carryover}} |
open tasks from the previous daily note |
{{carryover}} (daily notes only) looks back up to 31 days and takes at most 200 tasks. The previous note is not changed. During batch creation it stays empty, so the same tasks are not copied into every future note. Templater's <% … %> is left unchanged.
Rules are checked top to bottom. Each has a condition, the note types it applies to (daily / weekly / monthly), and a template file. You can rename, enable, reorder, or delete them. Put more specific rules above broader ones.
YYYY-MM-DD1–7, or 25–5 wrapping over the month end), the last N days, first or last day of the month or quarter
| Rule | Condition | Applies to | Template |
|---|---|---|---|
| Mom's birthday | Every year on 05-14 |
Daily | Templates/Birthday.md |
| Vacation | Date range 2026-07-01 → 2026-07-14 |
Daily | Templates/Vacation.md |
| Monthly review | N-th weekday: last Friday | Daily | Templates/Review.md |
| Sprint planning | Even ISO week | Weekly | Templates/Sprint.md |
| Workout | Weekdays Mon, Wed, Fri | Daily | Templates/Gym.md |
| Holiday | Holiday from folder | Daily | Templates/Holiday.md |
Point the plugin to a folder (for example Meta/Dates) whose note names start with a date. Holidays match every year by day and month.
Supported prefixes include 13.03 Birthday, 03-13 …, 13/03 …, 1999-03-13 - Natalia's birthday, and 1000-09-01 Knowledge Day (the separator after the date is optional). Two-part dates follow the Day first / Month first setting; YYYY-MM-DD is always unambiguous. You can also set a custom pattern (DD_MM, YYYY.MM.DD, …).
1000 show no age
Right-click a day and choose Mark as important… to give it a title, a color, and an optional "prepare N days before" highlight (0–30). A note file is not required.
The ⋯ button in the calendar header and a right-click on the month title open the same menu. Every action is also a command — assign hotkeys in Obsidian Settings → Hotkeys.
Commands create missing daily notes until the end of the week or month, for the week back or the whole week, or for a future month shown in the calendar. Existing notes are always skipped and never changed.
From the command, the ⋯ menu, or the day's context menu, apply the template that the rules would use for that date.
Off by default. When it is on, NF-Calendar opens today's daily note when Obsidian starts, and creates it if needed (without the confirmation dialog). If the note is already open, that tab is focused.
From the command palette or Settings → Daily notes, move daily notes into year folders, year+month folders, or back to one flat folder: Daily/2026-10-30.md → Daily/2026/2026-10-30.md.
A second file such as Daily/2026-11-05.md next to Daily/2026/2026-11-05.md is usually created by the core Daily notes plugin or Periodic Notes, which do not know about year folders. Turn off that plugin (or at least its startup option). Delete the flat file if it is empty. If the real note looks missing, check the year folder, the trash, and File recovery.
A month view with a table and charts: words, done and open tasks, holidays, and a current all-tasks-done streak. Click a day to open its note.
Jumps to the nearest existing daily note before or after the open one. Gaps are skipped and nothing is created.
The plugin is not yet in the Obsidian community plugin catalog. Install it from GitHub Releases:
calendar-weekday-templates, named "Calendar (Weekday Templates)"): disable it and delete the folder <your vault>/.obsidian/plugins/calendar-weekday-templates/ first. This release uses the id nf-calendar; settings from the old id are not migrated, so set them again.nf-calendar.zip (or main.js, manifest.json and styles.css) from the latest release.<your vault>/.obsidian/plugins/. You should get a folder nf-calendar/ with the three files.On the first start after an upgrade, the plugin once imports the folder, format, and template from the core Daily Notes and Periodic Notes plugins (if they were configured), plus older weekday templates. After that it no longer reads other plugins' settings. On a fresh install, the import only runs when you click Import from Daily Notes / Periodic Notes.
<% … %> is copied into the new note unchanged. If Templater's "Trigger Templater on new file creation" is on, Templater processes the new note itself.{{carryover}}, <% is escaped so Templater does not run it.--- block inside the note..obsidianMore detail is in docs/ARCHITECTURE.md (in Russian).
npm audit on 2026-11-03 reported 48 vulnerabilities, almost all in dev tooling. The release bundle includes the Svelte 3 runtime and obsidian-calendar-ui; obsidian and moment are provided by Obsidian.
Svelte 3 advisories are mostly about server-side rendering, which this plugin does not use. One remaining DOM-clobbering advisory stays open until the UI moves to a newer Svelte. A moment path-traversal advisory is mitigated by accepting only normal locale ids. Most other findings are in eslint, jest, and the build toolchain, which do not ship in the plugin.
npm install --legacy-peer-deps
npm run build # lint (svelte-check, eslint) + rollup -> main.js
npm test # jest unit tests (src/core/__tests__)
npm run dist # build + test + dist/ (zip and the three plugin files)
src/core: logic without Obsidian (templates, dates, rules, settings, stats, i18n), with tests in src/core/__tests__src/io: finding, creating, and reading notessrc/ui: calendar view, menus, settings, and dialogssrc/main.ts: plugin lifecycle and commandsSee docs/ARCHITECTURE.md and CHANGELOG.md. Issues and pull requests are welcome: keep src/core free of Obsidian imports, add tests for logic changes, run npm run build and npm test, and update both languages in src/core/i18n.ts.
MIT. See LICENSE. Original Calendar plugin © 2021 Liam Cain; this fork keeps the same license. Author: Nomber.
If this plugin is useful to you, you can support its development:
More plugins by Nomber: nomberobsidian.github.io