Leandro Voltolino90 downloadsYet Another Bases Calendar View. Lay notes out as cards on a day, week or month grid, and drag them to reschedule a date property.
Yet Another BAses CAlendar VIew — a calendar view for Obsidian Bases.
Notes become cards on a day, week or month grid, placed by any date property. Drag a card to another day to reschedule it, and click one to open the note. Optionally, your Todoist tasks land on the same grid beside your notes.
Requires Obsidian 1.11.4+ with the Bases core plugin enabled.

[- +] stepper), laid out masonry-style.html() in a formula works on a card the same as in a table.todo, done) to a
coloured accent, shown as a bar or a bullet before the title (or hidden), from
the settings tab.Drag & drop uses the browser's native drag, which doesn't fire on touch, so rescheduling is desktop-only. Viewing, opening and creating notes work on mobile.
.base file.type: calendar-cards
in the view's YAML).| Option | What it does |
|---|---|
| Date property | Which property places the note on the grid. Required. |
| Range | Day, week or month. The toolbar buttons write the same setting. |
| Days shown (Day range) | How many days (1–7) the day view shows side by side. The toolbar [- +] stepper writes the same setting. |
| Week starts on | Sunday or Monday. |
| Show weekends | When off, Saturday/Sunday are hidden for a 5-column grid. |
| Also show notes by creation date | Place notes that have no date-property value on their file's creation day (read-only). |
| Show time on cards | Show the time when the date has one. |
| Day view card width | Width of the masonry cards in the day view. |
| Setting | What it does |
|---|---|
| Open notes in | Floating modal, current tab, new tab or split — for clicking a card and for new notes. |
| New note template | Template file copied into notes created from the calendar (raw copy; template variables aren't expanded). |
| Status display | Show the status accent as an accent bar, a bullet before the title, or nothing. |
| Property layout | Arrange card properties stacked (one per line) or inline (flowing together). |
| Accent bar thickness | Height in px of each card's accent bar (0 hides it). |
| Card font sizes | Scale the card title, time and property-pill text, as a percentage of the default. |
| Status property | Frontmatter property whose value selects the accent colour. |
| Status colours | Map status values to accent-bar colours, each with its own opacity. |
| Todoist API token | Your Todoist token, kept in Obsidian's secret storage (not the settings file). |
| Show Todoist tasks | Place your Todoist tasks on the grid by their due date. |
| Todoist filter | Restrict tasks to a Todoist filter query (their own syntax); empty shows all. |
| Show completed tasks (Beta) | Also place completed tasks on their due day, styled like a done note. |
| Todoist auto-refresh | How often to re-fetch tasks — manual only, or every 5/15/30/60 minutes. |
| Todoist accent colour | One accent-bar colour (with opacity) for all Todoist cards; off tints them by priority. |
Show your Todoist tasks on the calendar alongside your notes, placed by their due date.
#Work | #Personal, @label) — the same syntax as Todoist's own filters.done (and not draggable). They're fetched per
visible month and cached, so browsing months stays light on the Todoist API.The Todoist integration needs Obsidian 1.11.4+ for its secret storage. Leave the token empty and nothing Todoist-related appears — the calendar works on its own.
With a Todoist token set up, these show in the command palette and can be bound to hotkeys:
Every card mirrors its note's frontmatter as data-* attributes and exposes a few
CSS variables, so a theme or snippet can restyle cards freely:
/* colour the accent bar by status */
.yabacavi-card[data-status="done"] { --yabacavi-accent-color: var(--color-green); }
.yabacavi-card[data-status="doing"] { --yabacavi-accent-color: var(--color-yellow); }
/* fade completed cards */
.yabacavi-card[data-status="done"] { opacity: 0.5; }
Handy hooks:
[data-<property>="…"] on each card, from the note's frontmatter ([data-status],
[data-project], …). List values match with ~=.--yabacavi-accent-color on .yabacavi-card; --yabacavi-accent-width, the
--yabacavi-title-scale / --yabacavi-time-scale / --yabacavi-pill-scale font
scales, and --yabacavi-day-card-width on .yabacavi (the settings and view
options write these — override them for finer control).--yabacavi-day-min-height on .yabacavi..yabacavi-card--todoist for Todoist cards, with [data-priority="1"…"4"] and
[data-recurring] to target them (their project/labels are in
[data-property="todoist.project"] / [data-property="todoist.tags"]).[data-completed] and [data-status="done"], so the
rules that style your done notes style them too.[data-placed-by="created"] (read-only,
not draggable).Status colours set in the settings tab are applied inline, so they win over CSS rules; leave the list empty to drive the accent entirely from your own CSS.
Once the plugin is in the directory:
With BRAT:
https://github.com/xupisco/obsidian-yabacavi
npm install
npm run build # produces main.js
Copy main.js, manifest.json and styles.css into your vault at
<vault>/.obsidian/plugins/yabacavi/, then reload Obsidian and enable the plugin.
npm install
npm run dev # esbuild watch; rebuilds main.js on change
npm run build # typecheck + production bundle
npm run lint # typecheck + eslint (obsidianmd rules)
Set OBSIDIAN_PLUGIN_DIR to your vault's plugin folder and npm run dev deploys
main.js, manifest.json and styles.css there on every rebuild:
OBSIDIAN_PLUGIN_DIR="/path/to/Vault/.obsidian/plugins/yabacavi" npm run dev