Spencer Twaddle
38296bc22a
Phase 5: Outgo API and page
...
- Add OutgosController: list, create, update, delete, reorder, categories, payment-sources endpoints
- Outgo DTOs with computed Monthly, Annually, MonthlyPercent fields
- Add AutocompleteInput component with filtered suggestion dropdown
- Add Outgo page: full table with all columns, inline editing, add/delete, drag-to-reorder
- Autocomplete wired to categories and payment-sources API endpoints
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-25 07:57:52 -05:00
Spencer Twaddle
f429a747d8
Phase 4: Income API and page
...
- Add FrequencyCalculator static utility (all 9 frequency multipliers)
- Add IncomesController: list, create, update, delete, reorder
- Add Income DTOs with computed Monthly/Annually fields
- Add shared TypeScript types (IncomeDto, OutgoDto, BudgetDto, ShareDto, SummaryDto)
- Add API client with Bearer token injection via setTokenProvider
- Add FrequencySelect, MoneyDisplay, BudgetNav shared components
- Add Income page: sortable table with inline editing, add/delete rows, drag-to-reorder via dnd-kit
- Wire TokenWirer in App.tsx to keep API client in sync with auth state
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-25 07:56:42 -05:00
Spencer Twaddle
963e511287
Phase 3: Budget and sharing API
...
- Add BudgetsController: list (owner + shared), create, get, rename, delete
- Add BudgetAuthorizationService: Owner / Edit / View / None access levels
- Add SharesController: list, add (resolves KnownUser immediately), update permission, revoke
- Register BudgetAuthorizationService as scoped service
- Add BudgetDto, ShareDto, and associated request DTOs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-25 07:55:07 -05:00
Spencer Twaddle
ae21da6a81
Phase 2: Authentication scaffolding
...
- Add JWT Bearer auth to ASP.NET (authority/audience from AUTH__AUTHORITY / AUTH__AUDIENCE config)
- Add KnownUserMiddleware: upserts KnownUser and resolves pending shares on each authenticated request
- Add MeController as a guarded test endpoint (/api/me)
- Add oidc-client-ts + react-router-dom to client
- Create AuthContext/AuthProvider with login, logout, token storage
- Create AuthGuard component protecting all budget routes
- Add stub /callback page for OIDC redirect handling
- Wire up all routes in App.tsx with SPA routing structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-25 07:54:21 -05:00
Spencer Twaddle
d788dfea03
Phase 1: Project scaffolding and infrastructure
...
- Scaffold Budget.Api (ASP.NET Core Web API, net10.0) with EF Core + Npgsql
- Scaffold Budget.Client (Vite + React + TypeScript) with /api proxy to localhost:5000
- Define all entity models: Budget, Income, Outgo, KnownUser, BudgetShare
- Configure AppDbContext with EF mappings and cascade deletes
- Add InitialCreate migration
- Configure SPA static file serving + fallback in Program.cs
- Add Dockerfile (multi-stage: node + dotnet sdk + aspnet runtime)
- Add .env.example with all required environment variables
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-25 07:37:28 -05:00