Plugins
This page covers the plugin stack and the custom Calendar View plugin I built for visualising events from multiple sources.
Personal Data Hub series
- Personal Data Hub
- Foundations
- Data pipelines
- QuickAdd scripts
- Chrome extensions
- 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:
| Plugin | Purpose | Source |
|---|---|---|
| Git | Version control, automatic commits | Community |
| QuickAdd | Custom JavaScript scripts | Community |
| Local REST API | Chrome extension communication | Community |
| Calendar View | Multi-source calendar visualisation | Custom |
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.jsmanifest.jsonstyles.css
Enable the plugin in Obsidian Settings → Community Plugins.
Configuration
Open Settings → Calendar View to configure:
General settings:
| Setting | Description |
|---|---|
| Default view | Choose month, week, or list |
| Start week on | Sunday or Monday |
| Show week numbers | Display ISO week numbers |
Calendar sources:
Each source configuration includes:
| Setting | Description |
|---|---|
| Name | Display name for the source |
| Folder | Path to the folder containing notes |
| Colour | Colour for events from this source |
| Date field | Frontmatter field containing the date |
| Title field | Optional field to use as event title |
Default sources
The plugin comes pre-configured with:
| Source | Folder | Colour |
|---|---|---|
| Watched | shows/watched/ | Red |
| Books | books/books/ | Blue |
| Health | health/daily/ | Green |
| Workouts | health/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
| Command | Description |
|---|---|
Calendar: Open calendar view | Open the calendar |
Calendar: Go to today | Jump to today's date |
Calendar: Next month/week | Navigate forward |
Calendar: Previous month/week | Navigate backward |
Calendar: Switch to month view | Change view |
Calendar: Switch to week view | Change view |
Calendar: Switch to list view | Change view |
Keyboard shortcuts
| Key | Action |
|---|---|
← → | Navigate between days |
↑ ↓ | Navigate between weeks |
Enter | Open selected day's events |
t | Go to today |
m | Switch to month view |
w | Switch to week view |
l | Switch 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.