Jaime Nagase1k downloadsAll-in-one life dashboard for habits, tasks, fitness, nutrition and studies, stored as plain Markdown notes in your vault.
All-in-one life dashboard for Obsidian: habits, tasks, fitness, nutrition, studies and finances rendered directly from your vault's Markdown files. Everything is stored as plain Markdown under a single folder, so your data stays yours.
| Tab | What it does |
|---|---|
| 🎯 Cockpit Life | The landing page: today's whole picture in one screen — quick task capture, habits with streaks, study progress, evolution charts and one-tap actions |
| 🚀 Habit Tracker | Monthly bullet-journal trackers: a clickable dot per day, weekly consistency bars and a rolling completion-rate line, per habit |
| ✅ Tasks | Kanban (drag & drop, folder-backed boards, priorities, columns) + Eisenhower matrix, search, optional Google Tasks sync |
| 🏋️ Fitness | Workout splits, active workout w/ timer, strength & cardio exercises, calendar, progress charts, monthly summaries |
| 🥗 Nutrition | Fixed meal plans, food logging, calorie calendar & trends, water tracking, Open Food Facts search |
| 📚 Studies | Kanban by topic (drag & drop, subtopics, URLs) + list view |
| 💰 Finances | Income/expense ledger, monthly summaries, category breakdown, recurring templates (monthly & weekly), net worth trend, savings buckets |
All visualizations use inline SVG (no external libraries / CDN).
Everything the day needs in three columns: capture and tick off what's due, toggle habits, watch the trends, and work the full open-task list without leaving the page.

One monthly tracker per habit — tap any day to log it, including days you forgot.
![]()
Kanban over folder-backed boards, plus an Eisenhower matrix you can drag tasks around in.

Splits, a live workout timer, and progress charts for both strength and cardio.

Four fixed meal slots, food search against Open Food Facts, and a calorie calendar.

A Kanban per topic, with subtopics and links to the material.

Ledger and monthly breakdown, a net worth trend since you started tracking, and savings buckets with their own goals.

The default tab, built for a single daily pass instead of hopping between pages. Nothing here has its own data format — every action calls the same code the owning module's page uses, so the two views can't drift apart.
+ add (no modal, so you
can type several in a row), today's habits with their current streak and a 7-day
consistency bar, then per-topic study progress.Habits are tracked month by month, bullet-journal style, with all three chart styles per habit: a dot row, a bar chart and a line chart.
Beyond the ledger and the monthly category breakdown:
Two-way sync between your Tasks boards and Google Tasks. Off by default — enable it under Settings → Google tasks.
The app has completed Google's OAuth verification, so connecting is the normal Google consent flow — no "unverified app" warning and no account limit:
npm installnpm run dev (watch) or npm run build (production, one-off)..obsidian/plugins/momentum-life/ (must contain manifest.json,
main.js, styles.css).Momentum works offline by default. It only reaches the network in two optional cases, and only when you actively use them:
world.openfoodfacts.org) over HTTPS, sending only the search term you typed.
No API key or account required.No personal data, vault content, or telemetry is transmitted otherwise. If you do not use these features, the plugin makes no network requests.
Set the Data root folder in plugin settings (default: Momentum Life).
| Path | Holds |
|---|---|
Tasks/<Board>/ |
One folder per board, one note per task. The folder is the board |
Tasks/Lists/<board>.md |
Markdown checklist mirrors, for interop with other plugins |
Habits/ |
One note per custom habit, with its date-keyed log |
Fitness/splits.md, Fitness/Exercises/, Fitness/Workouts/, Fitness/Months/ |
Splits config, exercise library, logged sessions, monthly hubs |
Nutrition/Plan/, Nutrition/Logs/, Nutrition/Months/, Nutrition/water.md |
Meal plans, logged meals, monthly hubs, water log |
Studies/boards.md, Studies/<Topic>/ |
Topic list and one note per study card |
Finance/Transactions/, Finance/Months/, Finance/recurring.md, Finance/savings.md |
Ledger, monthly hubs, recurring templates, savings buckets |
Notes/ |
Quick notes |
Config/settings.md |
Your settings (currency, targets, columns, board order) |
Task boards are plain folders, so creating a folder under Tasks/ creates a board and
dropping a .md file into one creates a task — the plugin adopts it, repairs its
frontmatter and files it. Tasks/_orphaned/ is an archive and is excluded everywhere.
Finance transactions, Nutrition logs and Fitness workouts are saved with human-readable filenames, and each month gets a hub note so the file list and Graph View stay legible. Frontmatter is still the source of truth — filenames and hub notes are derived, regenerable views, so renaming or regenerating them never changes your data or totals.
Readable per-item names. Each item is one Markdown file named from its own fields (invalid filename characters are sanitized, accents preserved):
| Item | Filename pattern | Example |
|---|---|---|
| 💰 Transaction | <category>-<note>-<amount>-<YYYY-MM-DD> |
Groceries-Market-84.20-2026-06-30 |
| 🥗 Meal log | <Meal>-<kcal>cal-<YYYY-MM-DD> |
Lunch-620cal-2026-06-30 |
| 🏋️ Workout | <Split>-<duration>min-<YYYY-MM-DD> |
PushDay-45min-2026-06-30 |
The transaction note segment is dropped when empty, amounts always use two
decimals with a . separator (no income/expense marker in the name), and if two
items would share a name the plugin appends the smallest 2, 3, … suffix —
never a random string.
Module-prefixed monthly hubs. Each module keeps one hub per month under its
own Months subfolder, named <Module> <YYYY-MM MonthName> so basenames never
collide across modules:
Finance/Months/Finance 2026-06 June — Income, Expenses and Balance in your
configured currency, plus a linked, date-sorted list of that month's transactions.Nutrition/Months/Nutrition 2026-06 June — total calories, average per day,
days logged, total protein/carbs, and the month's logs.Fitness/Months/Fitness 2026-06 June — workout count, total minutes, a
per-split breakdown, and the month's sessions.Every item body gets a wikilink to its hub (for example [[Finance 2026-06 June]]),
and hubs are regenerated whenever you add or delete an item. A month with no
items has its hub removed automatically. There is no global cross-module hub.
Graph View tip. Because each item links to its <Module> <YYYY-MM MonthName>
hub, the Graph View naturally clusters your notes into one group per module per
month. Open the Graph View and the hubs become the center of each monthly
cluster — a quick visual timeline of your finances, nutrition and training.
If you already have legacy-named notes, run the command palette command
"Momentum: migrate notes to readable names". It renames Finance, Nutrition
and Fitness notes to the readable scheme, adds each hub wikilink at most once,
and regenerates the month hubs — for all three modules in one pass. The rename is
backlink-aware (existing wikilinks keep resolving) and body-preserving (manual
lines you added, such as Hub: [[Hub - Personal]], are kept). It is idempotent
and guarded, so running it again does nothing and reports zero renames. A
one-time guarded auto-run also fires the first time you open a vault on a new
schema version; the explicit command is always available to re-run it.
Backup, dry-run & rollback. Before migrating a large vault:
Migration only touches filenames and hub notes; your transaction, meal and workout data lives in frontmatter and is never modified, so totals stay identical across renames.
Each module reads and writes plain Markdown notes with YAML frontmatter. Examples:
# Tasks/<Board>/<title>.md
task_id: "uuid"
title: "Close the deal"
status: "in progress" # one of the task columns
priority: "high"
kanban_name: "Side Projects" # mirrors the folder; the FOLDER is the source of truth
group: "KCD 26"
due: "2026-09-30"
type: "task"
# Habits/<name>.md
id: "h1717171717"
type: habit
habit_type: "do" # "do" (build it) or "quit" (break it)
name: "Meditate"
emoji: ⭐
log: # date -> logged (for "quit", a date means a relapse)
2026-09-04: true
2026-09-05: true
# Notes/<title>.md
title: "Idea"
color: yellow
type: note
src/main.ts — plugin entry (view registration, command, settings).src/view.ts — dashboard ItemView (sidebar + page router).src/context.ts — shared context (store + config + refresh).src/data.ts — Vault data layer (read/write/list + per-module loaders).src/types.ts — domain model + defaults.src/ui.ts — reusable Modal/Notice helpers.src/modules/*.ts — one renderer per page.styles.css — UI styles mapped to Obsidian theme variables.manifest.json, versions.json, package.json and the
USER_AGENT in src/foodapi.ts, then run npm install --package-lock-only so the
lockfile stays in sync (the release build uses npm ci).manifest.json version, with no v prefix:
git tag 0.6.9 && git push origin 0.6.9. The GitHub Action builds and attaches
main.js, manifest.json and styles.css to the release, with provenance attestations.gh attestation verify <asset> --repo jnagase/obsidian-momentum.The community directory page renders
this README and reads manifest.json straight from the repo, so it picks up documentation
and screenshot changes on its own — there's nothing separate to upload there.