Private
Public Access
1
0
Commit Graph

13 Commits

Author SHA1 Message Date
Catherine Renelle e2b69b41f4 Show current month's payment in amortization schedule
Filter from start of current month instead of today so the current
month's entry is always visible even mid-month.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:35:53 -05:00
Catherine Renelle 0392fc4690 Use daily per-diem for payoff calculation and rename dashboard bills section
Payoff quotes always use daily per-diem interest (rate/365 × days) regardless
of loan type. Rename "Upcoming Bills" to "Upcoming Transactions" on dashboard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:32:01 -05:00
Catherine Renelle f148b35ab2 Add payoff amount, fix dialog overlay and nav highlight for sub-routes
- Show estimated payoff amount (balance + accrued interest) in loan summary
- Display loan balances as absolute values in red
- Fix dialog overlay blocking UI after edit by closing in finally with nextTick
- Highlight parent nav item when viewing sub-routes (e.g. /loans/:id)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:12:50 -05:00
Catherine Renelle d28faa6838 Hide past payments in amortization schedule by default
Add toggle button to show/hide past payments. Future payments are shown
by default since past entries are rarely useful for day-to-day viewing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:00:15 -05:00
Catherine Renelle 1b06894383 Use daily interest accrual for lines of credit and auto loans, fix hasLoanDetail on account list
Lines of credit and auto loans use daily accrual (rate/365 × days) matching
actual bank calculations. Mortgages and personal loans keep monthly compounding.
Include LoanDetail in GetAllAsync so the loan cards correctly show status.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:47:14 -05:00
Catherine Renelle 47010e5f55 Use standard monthly compounding for all loan types
Daily accrual made HELOC estimates worse due to front-loaded 31-day
months. Revert to rate/12 for all types - it's the standard amortization
method and works well for mortgages and personal loans. For HELOCs and
auto loans, differences from bank statements are typically due to
variable rates, extra payments, or daily billing conventions that a
fixed amortization schedule cannot capture.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:10:18 -05:00
Catherine Renelle dd2cdbf815 Use daily interest accrual for HELOC and auto loan amortization
Mortgages and personal loans use monthly compounding (rate/12), but
HELOCs and auto loans accrue interest daily (rate/365 * actual days).
Select the calculation method based on account type and update the
disclaimer to reflect which method is being used.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 18:41:32 -05:00
Catherine Renelle 98104c0c0e Add estimation disclaimer to loan amortization view
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:36:46 -05:00
Catherine Renelle 6ddecd7a99 Use first payment date and maturity date instead of origination date and term
Replace the term months field with a maturity date picker - users know
when their loan ends, not the month count. Compute termMonths from the
two dates. Rename "Origination Date" to "First Payment Date" and adjust
the amortization schedule so payment #1 falls on the entered date.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:06:21 -05:00
Catherine Renelle 2ae12770cf Fix date timezone shift in loan detail maturity date computation
Parse date string components directly and use Date.UTC() to avoid
local timezone interpretation that shifts dates by a day in western
timezones when using new Date() with date-only strings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:33:46 -05:00
Catherine Renelle 3bb9c688ed Auto-populate loan details from Plaid liabilities and pre-fill setup form
Fetch loan data (mortgage/student) from Plaid's Liabilities API during sync
and auto-create LoanDetail records. For accounts without liabilities data,
pre-populate the setup form with balance, interest rate, and smart term
defaults. Also fixes maturity date computation in the frontend form.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:23:49 -05:00
Catherine Renelle 23d73736c9 Implement Phase 3: financial features frontend (budgets, scheduled transactions, loans)
Add API service files and replace stub views with full implementations:
- Budgets: month navigator, budget items table with progress bars, create/edit/delete
- Scheduled Transactions: data table with skip/post-now actions, add/edit dialog
- Loans: loan list, detail view with amortization schedule, payoff scenario calculator

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:14:43 -05:00
Catherine Renelle 6520ebf221 Initial commit: Purrse personal finance app
Self-hosted, plugin-extensible personal finance manager built with
ASP.NET Core 9.0, Vue 3 + Vuetify 3, and PostgreSQL 17.

Backend (8 .NET projects):
- Core: 19 domain models, 6 enums, 14 DTOs, 12 service interfaces
- Data: EF Core DbContext, 16 entity configurations, category seeder
- API: 14 controllers, 15 services, JWT auth, SignalR, middleware
- Plugins: Abstractions + OFX/CSV/QIF file parsers
- Tests: 28 xUnit tests (fingerprinting, duplicate detection, parsers)

Frontend (Vue 3 + Vuetify 3 + TypeScript):
- 13 views, Pinia stores, Axios API services with JWT interceptors
- Dashboard, accounts, transactions, categories, imports, and more

Deployment:
- Docker Compose (PostgreSQL 17 + .NET API + nginx frontend)
- Auto-migration on startup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 08:56:46 -05:00