p0 — Recurring transactions
Problem
Monthly bills (PLN electricity, internet, subscriptions) require manual entry every month. Easy to forget; throws off month-to-month comparisons when one cycle slips.
Outcome
Mark a transaction as recurring with a cadence (monthly / weekly / custom) and auto-generate the next occurrence on its due date. Allow editing or skipping a single occurrence without breaking the series.
Acceptance
Open questions
- Materialization trigger: lazy on-read vs. eager via a scheduled API route hit by an external cron? Lazy is simpler but harder to reason about for dashboards; eager needs ops (Vercel cron or external).
- Interaction with offline outbox — auto-generated rows must not double-create if the device was offline at the cadence boundary.
Implications
If skipped
- Monthly bills stay manual (PLN, internet, subscriptions). Missed months skew category totals and month-over-month comparisons; you keep paying the cognitive tax of re-entering the same rows or reconciling in a spreadsheet.
Why this priority
- p0 — recurring spend is a large share of personal cash flow. Automating series materialization is a table-stakes finance feature that directly affects data quality on the dashboard and home page; deferring it leaves a visible gap in “track everything here.”
When shipped
- Predictable bills appear on schedule; one-off edits to a single occurrence do not break the series.
Source
docs/todo.md — High Priority › Transaction Management. Estimated 4-6h there.