Wallet analytics
A personal-finance analytics dashboard for BudgetBakers Wallet data: one self-contained HTML page with no backend and no build step.
Open the live demo →
The demo runs on synthetic data. A fictional household moves from the UK to Australia, and every account, payee, amount and exchange rate is invented by make_demo.py.
What it does
- Filters that apply everywhere. Date-range slider and presets, region and life-period splits, and multi-select facets for category, subcategory, necessity, label, account, payee, currency, entry method and state. It also filters by amount range and free-text search. Click any bar to filter to it, with undo.
- Overview. KPIs with period-on-period deltas and sparklines, income versus spending, where the money goes, essential versus discretionary spending, labels, and the largest outgoings.
- Trends. Any granularity, moving averages, splits by any dimension, year over year, cumulative pace, a weekday profile and a daily calendar heatmap.
- Breakdown and Pivot. Any dimension by any other, with heat shading. Pivot values can be shown per month, so periods of different lengths compare fairly.
- Compare. The selected range against the previous period, the same period last year, UK against Australia, or two life periods. Includes a headline table, dumbbell chart, biggest movers and mix shift.
- Forecast. Fits a regression on the selected range (linear OLS, log-linear or flat mean) and projects the following n periods.
- Shows a 95% prediction interval, a seasonal-naive benchmark, and MAPE, MAE, RMSE and interval coverage against actuals.
- Attributes the variance to any dimension.
- Warns about structural breaks, partial periods and filters that leave gaps.
- Currency. Every record is converted to A$ or £ at either the historical rate (its own date) or a constant rate.
- Accessibility. Light and dark themes, a table view behind every chart, CSV export everywhere, and keyboard access throughout.
How it works
dashboard_template.html holds the whole app: vanilla JavaScript plus Apache ECharts from a CDN. A build step embeds the data as compact columnar JSON, producing a single static file.
- Real use: a private script pulls the records from the Wallet REST API, converts them with European Central Bank reference rates, and embeds them.
- This demo:
make_demo.py generates a realistic ledger and embeds that instead.
python make_demo.py
That writes index.html, which you can open in a browser. It needs Python 3.10 or later and the standard library only. The output is deterministic: the same seed always produces the same file.