A real data table
Ledger
Clickable-header sorting, a live filter, and running totals — a spreadsheet-grade table written as one Markdown file. The numbers below are { … | money }; the dates are { … | date }; the totals are sum() / avg() / max().
Theme
Total spend
$1,109.35
Average
$138.67
Largest
$312.50
Entries
8
↻ live · 0 seconds on this page
No expenses match "".
Jun 22, 2026
Aurora Studio
Software
$149.00
Jun 20, 2026
Briza Coffee
Meals
$18.40
Jun 19, 2026
Cobalt Cloud
Hosting
$312.50
Jun 18, 2026
Dune Print Co
Office
$64.00
Jun 16, 2026
Aurora Studio
Software
$29.00
Jun 15, 2026
Ember Transit
Travel
$212.75
Jun 13, 2026
Briza Coffee
Meals
$11.20
Jun 11, 2026
Cobalt Cloud
Hosting
$312.50
8 entries · totalling $1,109.35 · sorted by amount (desc)
View source — it's Markdown
:store expenses = [ … ]
:state sortKey = "amount"
:state sortDir = "desc"
:state q = ""
:computed total = sum(expenses, amount)
# clickable headers set the sort column + direction
:button "Amount" -> sortKey = "amount" ; sortDir = "desc"
:button "▲" -> sortDir = "asc"
:bind q placeholder="Filter by merchant…"
@loop expenses into e where e.merchant contains q sort by { sortKey } { sortDir }
| { e.date | date:"medium" } | { e.merchant } | { e.amount | money } |
:button "✕" -> expenses remove e
@endloop
Total: { total | money }