A read-only web interface for Ivy Wallet
backups. Export a backup from the Android app, upload the .zip here, and
browse analytics, filter transactions, build reports, and chat with an AI over
your finances — all entirely in your browser.
- Dashboard — net worth, income vs expense, spending by category, net trend, recent transactions, per-account balances.
- Transactions — virtualized table with detailed filters (date range, type, account, category, currency, text search, amount range) and sorting.
- Categories / Accounts — per-item rollups with drill-through.
- Reports — configurable builder (group by category/account/month/currency, metric, chart/table) with saveable report configs.
- Ask AI — natural-language Q&A over your data via OpenRouter, using client-side tool calling so the model queries exactly what it needs.
- Multi-currency — amounts shown in native currency; combined totals convert to a base currency using free FX rates (with manual overrides).
Everything stays in your browser. The parsed backup lives in IndexedDB; your OpenRouter API key is stored locally and used to call OpenRouter directly. No backend, no servers.
The Ivy Wallet backup .zip contains a single UTF-16BE encoded JSON file.
Ivy Web decodes it (sniffing the BOM), validates the structure, and stores
accounts, categories, and transactions in IndexedDB. Android ARGB color ints are
converted to hex; Ivy icon names map to Lucide icons.
npm install
npm run dev # start dev server
npm run build # type-check + production build
npm run preview # preview the production buildVite · React · TypeScript · Tailwind CSS v4 · Dexie (IndexedDB) · React Router · Recharts · TanStack Table/Virtual · JSZip · zustand · date-fns · lucide-react.
- In the Ivy Wallet Android app, export a backup.
- Open Ivy Web → Settings → upload the
.zip. - (Optional) Add an OpenRouter API key in Settings to enable Ask AI.