Skip to content

Feature/finance tracker v2#2

Merged
alvarotorresc merged 24 commits intomainfrom
feature/finance-tracker-v2
Feb 27, 2026
Merged

Feature/finance tracker v2#2
alvarotorresc merged 24 commits intomainfrom
feature/finance-tracker-v2

Conversation

@alvarotorresc
Copy link
Copy Markdown
Owner

No description provided.

@alvarotorresc alvarotorresc self-assigned this Feb 27, 2026
…investments tables

Replace hardcoded single-migration Migrate() with a tracked migration
system using a _migrations table for idempotent execution. Add
002_enhanced.sql with seven new tables (accounts, tags, transaction_tags,
recurring_rules, budgets, savings_goals, investments), ALTER columns on
transactions and categories, and new indexes. Use shared.OpenDatabase()
for WAL + foreign keys. Includes six new migration tests.
…and reorder

Replace inline listCategories handler with a proper categories package
following the handler->repository pattern. Supports create, update,
delete (with transaction reference check), filter by type, and bulk
reorder via sort_order. Case-insensitive duplicate name detection.
…generation

Adds CRUD endpoints for recurring transaction rules (GET, POST, PUT,
DELETE /recurring) and a generation engine (POST /recurring/generate)
that creates transaction instances based on frequency rules.

The generation engine supports monthly, weekly, biweekly, and yearly
frequencies with proper date clamping (e.g. day 31 in a 30-day month)
and idempotency (calling generate twice produces no duplicates).

Also includes the transactions module (refactored with transfers,
tags, and account linking) from the previous task.
Add investments module with full CRUD (create, list, update, delete)
including P&L calculation for positions with units and prices.

Add reports module with 4 read-only aggregation endpoints:
- GET /reports/summary: monthly income, expense, balance by category/account
- GET /reports/trends: monthly totals for a date range (line chart data)
- GET /reports/categories: category comparison with previous month
- GET /reports/net-worth: account balances + investment positions

Remove old inline getSummary handler, replaced by the reports module.
…g to modules

Adds legacy /summary -> /reports/summary redirect for backward
compatibility. Prioritizes month-specific budgets over recurring ones
in the widget query.
TypeScript types mirroring all backend Go models, typed API client
wrapping pluginApi with data extraction, and 4 reusable shared
components: MonthPicker, AmountDisplay, ProgressBar, EmptyState.
Replace monolithic FinancePage with a tab shell containing five sections
(Overview, Transactions, Budgets, Goals, Investments) plus a settings
panel toggle. Each tab renders a placeholder component that will be
implemented in subsequent tasks. Generates recurring transactions on
mount. Adds i18n keys for tab labels and settings in both EN and ES.
…transactions

Add YYYY-MM format validation for the month query parameter in the
transactions list handler. Wrap Create and Update repository methods
in database transactions so the main INSERT/UPDATE and tag linking
operations are atomic.
@alvarotorresc alvarotorresc force-pushed the feature/finance-tracker-v2 branch from e769bfe to cc53111 Compare February 27, 2026 19:05
…ocritic

Investment struct is 128 bytes, gocritic hugeParam lint rule requires
passing it by pointer.
@alvarotorresc alvarotorresc merged commit aa8a453 into main Feb 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant