No description
  • Go 57.2%
  • TypeScript 39.1%
  • Python 3.2%
  • CSS 0.3%
  • JavaScript 0.1%
Find a file
exe.dev user dc92e0e026 Redesign Overview page around net worth, investments, and debt
Refocus the dashboard away from current-month spending detail and onto
household financial health.

- Replace 'This month spending' stat card with 'Cash' (net spending
  account balance). Add percent change pills and dollar deltas for net
  worth, investments, and debt, all driven by a 3M / 6M / 12M / All
  window selector in the header. Debt deltas use inverse coloring so
  paydown reads as green.
- 'Top changes this month' card removed.
- New 'Net worth trajectory' area chart shows the merged net worth
  series (investments minus debt) with investments and debt drawn as
  dashed reference lines and a horizontal line at the window-start
  value. Built by merging investment-history and debt-history series
  with carry-forward semantics.
- New 'Investment performance' and 'Debt paydown' charts under the main
  chart, each scoped to the window with their own trend pill.
- 'Current allocation' renamed 'Composition' and now uses proportional
  bars based on absolute value (so debts read as a long rose bar rather
  than a single dot).
- 'Household' card simplified to a compact list of members and account
  counts; ownership badge spam removed (those live on each domain page
  now).
- Anchor 'As of' timestamp on the latest history point, not today, so
  the page stays meaningful during lulls between imports.

Co-authored-by: Shelley <shelley@exe.dev>
2026-05-14 17:41:30 +00:00
.github/workflows add data structures for household finance tracker (#9) 2026-04-11 09:51:10 -06:00
api Add investment history endpoint and redesign Investments page 2026-05-14 16:33:52 +00:00
categorize add data structures for household finance tracker (#9) 2026-04-11 09:51:10 -06:00
cmd/bags feat: embed web frontend into Go binary with -tags embedweb 2026-04-12 19:10:23 +00:00
domain add REST HTTP API for household finance management (#18) 2026-04-11 13:38:51 -06:00
exchange Fix gofmt alignment in exchange/sync.go 2026-04-20 14:05:54 +00:00
ingest add data structures for household finance tracker (#9) 2026-04-11 09:51:10 -06:00
scripts seed: add scripted realistic 2-person household seed + UX findings 2026-05-01 12:25:16 +00:00
store Add investment history endpoint and redesign Investments page 2026-05-14 16:33:52 +00:00
web Redesign Overview page around net worth, investments, and debt 2026-05-14 17:41:30 +00:00
.gitignore Phase 1: Scaffold frontend and serve from Go app (#25) 2026-04-11 14:03:25 -06:00
AGENTS.md feat: embed web frontend into Go binary with -tags embedweb 2026-04-12 19:10:23 +00:00
go.mod add data structures for household finance tracker (#9) 2026-04-11 09:51:10 -06:00
go.sum add data structures for household finance tracker (#9) 2026-04-11 09:51:10 -06:00
README.md Add AGENTS.md, README.md, and rewrite web/README.md 2026-04-12 18:00:56 +00:00
SEED_FINDINGS.md seed: add scripted realistic 2-person household seed + UX findings 2026-05-01 12:25:16 +00:00

Bags

A household finance tracker for managing spending, investments, debts, and net worth across multiple people.

Overview

Bags is a personal finance tool built as a Go API with a React SPA frontend. It tracks:

  • Spending — bank accounts, credit cards, transaction imports (CSV), auto-categorization
  • Investments — TFSA, RRSP, LIRA, non-registered accounts with holdings, lots, and performance tracking
  • Debts — mortgages, lines of credit, student loans with rate history and balance snapshots
  • People — household members linked to accounts via ownership
  • Reports — net worth, spending summaries, investment performance, debt paydown

Architecture

The backend and frontend are intentionally decoupled — they communicate only through a REST API.

Layer Tech Directory
API server Go (stdlib net/http), SQLite cmd/, api/, store/, domain/
Frontend React 19, TypeScript, Vite, Tailwind CSS web/
Database SQLite (WAL mode, goose migrations) store/migrations/

Quick Start

Backend

go run ./cmd/bags -port 8080 -db ./bags.db

Frontend (development)

cd web
npm install
npm run dev

The Vite dev server proxies /api to the Go backend at localhost:8080.

Serving the built frontend from Go

cd web && npm run build
cd .. && go run ./cmd/bags -port 8080 -db ./bags.db -web ./web/dist

Testing

go test ./...

Project Structure

cmd/bags/main.go    — server entrypoint
api/                — HTTP handlers and routing
domain/             — data types (no dependencies on DB or HTTP)
store/              — SQLite repositories and migrations
categorize/         — transaction auto-categorization
ingest/             — CSV import parser
web/                — React SPA (see web/README.md)

License

Private.