Two of the four ideas picked from the Maybe/Sure feature audit:
- Idle cash: a 5th proactive alert flags a depository account (checking/
savings/cash) sitting at or above a configurable balance with no
transaction touching it for a configurable number of days.
- Category hierarchy: categories can now have one level of subcategories
(Groceries -> Alcohol). Dashboard/report aggregations roll a
subcategory's spending into its parent's slice.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Lets the user find a past purchase by keyword instead of paging through
months manually — search hits description/merchant/notes and ignores the
month filter, with a "jump to month" action on each result to view it in
its normal monthly context.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Asset(...) в create_asset игнорировал payload.risk_level, а _to_read()
не передавал risk_level в AssetRead — из-за дефолта в схеме API всегда
отвечал Medium вне зависимости от выбора в форме и данных в БД.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Year was previously hardcoded to the current year on all three pages
(useState with no setter) — only the month could be changed via
MonthSelector, making it impossible to look at or compare older years
even though transaction history goes back further than the current
year.
Adds GET /transactions/years (contiguous range from the earliest
transaction through the current year) and a YearSelector component
matching MonthSelector's style, wired into all three pages alongside
a real year useState.
Aurum — a self-hosted personal finance operating system: cash flow,
net worth tracking, budgets, goals, recurring payments, reports,
proactive alerts, and a compound-interest returns calculator, all
bilingual (RU/EN) and mobile-first. Ships as a three-container Docker
Compose stack (Postgres + FastAPI + nginx-served React frontend).
See README.md for setup and CONTRIBUTING.md for development.