Skip to main content

Plugins

info

This page covers the plugin stack and the custom Calendar View plugin I built for visualising events from multiple sources.

Personal Data Hub series

  1. Personal Data Hub
  2. Foundations
  3. Data pipelines
  4. QuickAdd scripts
  5. Chrome extensions
  6. Plugins - You are here

The calendar problem

Once I had books, shows, health, and workouts flowing into the vault, I wanted to see them all on a calendar. One view showing everything that happened on a given day. Click a day and see what I watched, what I read, how I slept, whether I exercised.

The existing calendar plugins did not do this. The most popular one only showed notes you created through the plugin itself because it tracked them in a separate database. Another only supported one folder. A third could not handle my frontmatter schema.

So I built my own.

The plugin stack

After testing many community plugins I reduced them down to three, plus one I built myself:

PluginPurposeSource
GitVersion control, automatic commitsCommunity
QuickAddCustom JavaScript scriptsCommunity
Local REST APIChrome extension communicationCommunity
Calendar ViewMulti-source calendar visualisationCustom

Calendar View plugin

Calendar View displays events from multiple folders with colour coding. Shows in red, books in blue, health in green, workouts in yellow. All on one calendar.

Features

  • Month view - Traditional calendar grid with event dots
  • Week view - Detailed weekly view with event cards
  • List view - Agenda-style list of events
  • Multiple sources - Configure multiple folders with different colours
  • Colour coding - Each source gets its own colour for easy identification
  • Click to open - Click any event to open the corresponding note
  • Live updates - Calendar updates automatically when notes change
  • Keyboard navigation - Navigate with arrow keys

Installation

Copy the following files to your vault's .obsidian/plugins/calendar-view/ folder:

  • main.js
  • manifest.json
  • styles.css

Enable the plugin in Obsidian Settings → Community Plugins.

Configuration

Open Settings → Calendar View to configure:

General settings:

SettingDescription
Default viewChoose month, week, or list
Start week onSunday or Monday
Show week numbersDisplay ISO week numbers

Calendar sources:

Each source configuration includes:

SettingDescription
NameDisplay name for the source
FolderPath to the folder containing notes
ColourColour for events from this source
Date fieldFrontmatter field containing the date
Title fieldOptional field to use as event title

Default sources

The plugin comes pre-configured with:

SourceFolderColour
Watchedshows/watched/Red
Booksbooks/books/Blue
Healthhealth/daily/Green
Workoutshealth/workouts/Yellow

Expected note format

Notes should have a frontmatter date field:

---
date: "2026-01-15"
title: "Event Title"
categories:
- "[[SomeCategory]]"
---

The plugin reads the date field (configurable per source) and displays the note on that day.

Commands

CommandDescription
Calendar: Open calendar viewOpen the calendar
Calendar: Go to todayJump to today's date
Calendar: Next month/weekNavigate forward
Calendar: Previous month/weekNavigate backward
Calendar: Switch to month viewChange view
Calendar: Switch to week viewChange view
Calendar: Switch to list viewChange view

Keyboard shortcuts

KeyAction
Navigate between days
Navigate between weeks
EnterOpen selected day's events
tGo to today
mSwitch to month view
wSwitch to week view
lSwitch to list view

Development

The plugin is built with:

  • TypeScript
  • Obsidian Plugin API
  • esbuild for bundling

To develop locally:

cd obsidian-plugins/calendar
npm install
npm run dev

This watches for changes and rebuilds automatically.

What the calendar revealed

The week view is already showing me things I did not expect. Some days I watch a lot of shows and do no exercise. Other days I exercise and read but watch nothing. Patterns I never noticed because the data was scattered across different apps.

This is exactly what I wanted for my year-in-review. Not just the data, but the connections between different parts of my life.


What's next

The original goal was to create my year-in-review and now I have the data. All in plain text files I own forever.

I started this because I am rubbish at journaling. I am still rubbish at journaling. But the system captures data automatically where it can, makes manual capture fast where it cannot, and links everything so I can explore my history like a knowledge graph.

The year-in-review is next. Weekly, monthly, and quarterly views with trend detection. If a trend is going in the wrong direction, I want to see it before the end of the year.

Related: The Personal fitness coach application uses the same health data pipeline for predictive coaching.