Private
Public Access
1
0
Commit Graph

10 Commits

Author SHA1 Message Date
Catherine Renelle 6ae90c0c38 Implement Phase 4: reports & investments frontend
Add interactive reports dashboard with 4 chart types (spending by
category donut, income vs expense bar, net worth area, cash flow bar)
using ApexCharts, date range presets, and account filtering. Add
investment portfolio view with holdings table, allocation chart, and
gain/loss color coding. Includes TypeScript types and API services.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:02:14 -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 2ace39c544 Implement Phase 2: end-to-end import system
Complete the import flow from file upload through duplicate resolution
to transaction creation. Previously, ResolveDuplicatesAsync was a stub
that only incremented counters, FileWatcherService detected files but
didn't process them, and ImportsView.vue ignored the API response.

Backend:
- Add ParsedDataJson column to ImportBatch to persist parsed data
  between upload and confirm steps
- Rewrite ImportService.ResolveDuplicatesAsync to deserialize parsed
  transactions and create/merge/skip based on user decisions, with
  payee matching, fingerprinting, and account balance updates
- Add GetBatchesAsync for import history
- Complete FileWatcherService: wait for file ready, resolve account by
  filename, call UploadAsync, send SignalR notification, archive file
- Add GET /api/imports/batches endpoint

Frontend:
- Create imports API service (frontend/src/services/imports.ts)
- Add ImportBatch, DuplicateResolution types
- Rewrite ImportsView.vue with 3-step Vuetify stepper wizard:
  upload, review with duplicate handling, completion summary,
  plus import history table

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 11:16:39 -05:00
Catherine Renelle 524176faec Fix .gitignore excluding frontend plugins and test files
The broad plugins/ and imports/ patterns were matching directories
at all levels, excluding frontend/src/plugins/vuetify.ts,
frontend/src/views/imports/, frontend/src/views/plugins/, and
src/Purrse.Tests/Plugins/. Changed to /plugins/ and /imports/
to only match root-level directories.

This was the root cause of the Docker build failure - vuetify.ts
was missing from the repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 10:04:19 -05:00
Catherine Renelle 79821e3e04 Add .dockerignore files and increase Node memory limit
Prevents node_modules/dist from polluting Docker build context.
Sets NODE_OPTIONS max-old-space-size=4096 for Vite builds on
memory-constrained servers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:53:47 -05:00
Catherine Renelle 7ebff12b33 Use full node:22 image for frontend build stage
Alpine was causing native dependency issues with sass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:18:31 -05:00
Catherine Renelle 9959e7dbdc Harden frontend Dockerfile for constrained environments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:17:10 -05:00
Catherine Renelle b46e62731e Separate typecheck from build for faster Docker builds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:15:02 -05:00
Catherine Renelle 8ee4a7b2c9 Add package-lock.json for reproducible frontend builds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:12:37 -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