No description
Find a file
jcig789 02de9d93f4 fix: single-snapshot chart shows dashed reference line instead of lone dot
A solitary dot in empty chart space read as a glitch. Replace with a
horizontal dashed line spanning the full chart width at the snapshot value,
with the filled dot centered on it. Communicates 'this is your baseline —
the line builds from here' rather than an isolated data point.
2026-07-17 16:15:09 +09:00
docs feat: Standing tab — The Bearing financial health index 2026-07-17 11:01:56 +09:00
src fix: single-snapshot chart shows dashed reference line instead of lone dot 2026-07-17 16:15:09 +09:00
.gitignore feat: initial release v0.1.0 2026-07-15 15:58:33 +09:00
CONTRIBUTING.md fix: resolve remaining store warnings 2026-07-17 10:10:19 +09:00
esbuild.config.mjs fix: address all remaining Obsidian store review errors and warnings 2026-07-15 20:58:34 +09:00
LICENSE feat: initial release v0.1.0 2026-07-15 15:58:33 +09:00
manifest.json feat: v0.2.7 — net worth monthly snapshots for Momentum pillar 2026-07-17 15:42:18 +09:00
package-lock.json feat: initial release v0.1.0 2026-07-15 15:58:33 +09:00
package.json chore: bump to v0.2.4 2026-07-16 21:53:25 +09:00
README.md docs: update roadmap wording in README 2026-07-17 11:54:44 +09:00
styles.css feat: v0.2.7 — net worth history snapshots + history chart 2026-07-17 16:01:48 +09:00
tsconfig.json feat: initial release v0.1.0 2026-07-15 15:58:33 +09:00
versions.json feat: v0.2.7 — net worth monthly snapshots for Momentum pillar 2026-07-17 15:42:18 +09:00

Ledgr — Personal Finance for Obsidian

Multi-currency personal finance tracker that lives entirely inside your Obsidian vault. No accounts, no cloud, no subscriptions.


Features

Core

  • Quick transaction capture — log expenses and income in seconds via modal or command palette; Enter to save on desktop
  • Dashboard — monthly cash flow summary: income, expenses, savings, savings rate gauge, category donut chart, 6-month trend, per-category budget bars
  • Budgets — set per-category monthly limits with over-budget indicators and fixed/variable classification
  • Net worth tracker — bank accounts, investment accounts, and liabilities across multiple currencies with allocation chart
  • Liability tracker — track loans, mortgages, credit cards, and installment plans; log payments with live balance preview; due-date reminders on the dashboard
  • Financial statements — CPA-style Income Statement (with budget vs. actual variance), Cash Flow, and Balance Sheet; K/M/B formatting for large amounts
  • Savings goals — set a target amount, deadline, and linked account; see projected completion date and progress bar
  • Daily countdown — budget remaining and daily allowance for the rest of the month

Reports

  • Monthly review — generate a Markdown note summarizing any past month: income, expenses, category breakdown, notable transactions, vs. last month
  • Ledgr Wrapped — generate an annual year-in-review note with best/worst months, top spending categories, and transfers summary

Transfer Tracker (opt-in)

  • Log international money transfers with fee, exchange rate, and received amount
  • Dashboard widget with monthly and YTD totals, lifetime sent, history with period filter

Navigation & UX

  • Sticky top tab bar — Dashboard | Net Worth | Statements — works on mobile and desktop
  • Transaction edit and delete (2-step confirm on delete)
  • Currency toggle — switch between base and secondary currencies instantly
  • Old Money design system — charcoal, small caps, tabular numerals

Mobile

  • Fully responsive throughout
  • Safe-area-inset support for iPhone notch and home indicator
  • Compact controls in sticky zone on small screens

Quick Start

Manual installation:

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. In your vault, create the folder .obsidian/plugins/ledgr/.
  3. Copy the three files into that folder.
  4. Open Obsidian → Settings → Community plugins → enable Ledgr.
  5. The onboarding wizard runs on first launch.

From the community store (pending review): search "Ledgr" in Settings → Community plugins → Browse.


How It Works

All data is stored as plain files in your vault under a configurable folder (default: Private/Finance).

  • Transactions — monthly Markdown files (transactions/YYYY-MM.md) as human-readable tables with Dataview inline fields
  • Budgetsbudgets.json
  • Net worthnetworth.json (accounts, brokerages, liabilities)
  • Goalsgoals.json
  • Transfersremittances.json (if transfer tracker is enabled)

No external services are contacted. No data ever leaves your device.


Configuration

Open Settings → Ledgr or tap the gear icon on the dashboard.

Setting Description
Finance folder Vault path where all Ledgr data is saved
Base currency Your primary currency (JPY, USD, EUR, PHP, etc.)
Secondary currencies Up to two additional currencies for display toggles
Exchange rates Manual rates — update as needed; staleness indicator on dashboard
Enable transfer tracker Opt-in module for international transfers
Append to daily note Auto-append spending summary when opening a daily note

Exchange rates use the format BASE_QUOTE — e.g. JPY_PHP means 1 JPY = X PHP.


Liability Tracker

Add liabilities (mortgage, car loan, credit card, personal loan, student loan, installment/BNPL) in the Net Worth tab. For each liability set:

  • Original amount and current balance
  • Monthly payment amount and due day
  • Reminder days ahead (shows upcoming payment banner on the dashboard)

When a payment is due, a banner appears on the dashboard with a Pay button. Tapping it opens a payment modal showing a live preview (Balance → Payment → Remaining), logs the payment against the account balance, and records it as a transaction in the correct expense category.


Transfer Tracker

Enable in settings. Log any international transfer with:

  • Amount sent and received
  • Service (Wise, Revolut, Bank Transfer, or custom)
  • Fee and exchange rate at time of transfer

Dashboard shows monthly/YTD totals alongside regular spending. Full history with month/year/all-time filter.


Dataview Compatibility

Transactions are written with Dataview inline fields so they can be queried directly.

TABLE amount, currency, category, subcategory
FROM "Private/Finance/transactions"
WHERE type = "expense"
SORT date DESC
TABLE sum(amount) as Total
FROM "Private/Finance/transactions"
WHERE category = "Food & Drink"
GROUP BY date

Fields per transaction: date, type, amount, currency, category, subcategory, note.


File Structure

<financeFolder>/
  transactions/
    YYYY-MM.md         # One file per month — readable table + Dataview fields
  budgets.json         # Category limits
  networth.json        # Accounts, brokerages, liabilities
  goals.json           # Savings goals
  remittances.json     # Transfer history (if enabled)
  reviews/
    YYYY-MM-review.md  # Generated monthly review notes
    YYYY-wrapped.md    # Generated annual wrapped notes

Development

Requirements: Node.js 18+, npm.

npm install

# Dev build with watch + auto-copy to vault
VAULT_PATH=/path/to/your/vault npm run dev

# Production build
VAULT_PATH=/path/to/your/vault npm run build

Create a .env file in the repo root with VAULT_PATH=/path/to/vault to avoid setting it every time.


Roadmap

  • CSV import / export
  • Recurring transaction templates
  • Historical exchange rate tracking
  • Net worth snapshots over time
  • Multi-household / multi-country view