Commit Graph

18 Commits

Author SHA1 Message Date
e6f5d5a33b reverted budget allocation for credit cards 2026-04-21 09:47:49 -04:00
7ccd64a7bb CC account value consistency 2026-04-21 08:25:16 -04:00
d67a80b413 account specific budget queries 2026-04-20 23:44:06 -04:00
91a33cdfec Month Year selection for Dashboard 2026-04-20 23:31:59 -04:00
d865b02752 wrapped setBudgetTarget to fall back to '__none__' when the value is null. 2026-04-20 23:20:17 -04:00
f4216815e8 added functionality for multi-edit of transactions 2026-04-20 23:17:56 -04:00
jerick
60fc836b73 feat: category import from CSV + budget auto-assign rules
Category:
- Add categoryColumn to NormalizerConfig and NormalizedRow
- Map 'Category' column for Discover CC profile
- Write category to Transaction on upload

Budget rules:
- Add BudgetRule model (userId, budgetId, pattern)
- API: GET/POST /api/budget-rules, DELETE /api/budget-rules/:id
- Apply rules during upload (first case-insensitive match wins)
- Budgets page fetches and passes rules per budget
- BudgetCard 'Rules' menu item opens BudgetRulesDialog for add/delete

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 22:56:41 -04:00
jerick
efe42ac366 fix: show account name in upload select after selection
Base UI Select.Value renders the raw value prop (cuid) rather than
the item label. Pass the looked-up account name as children to
override it. Falls back to placeholder when no account matches.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 22:30:58 -04:00
jerick
42f1d34ddd fix: move seed command to prisma.config.ts (Prisma 7 requirement)
Prisma 7 no longer reads the seed command from package.json.
It must be set in prisma.config.ts under migrations.seed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:01:18 -04:00
jerick
adb5d144a0 fix: allow unauthenticated access to /login to prevent redirect loop
Unauthenticated requests to /login were hitting the auth gate and
redirecting back to /login?callbackUrl=/login, causing a loop.
Let the login page render for unauthenticated users; only redirect
away from /login when the user is already logged in.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:49:01 -04:00
jerick
2e264014b6 fix: derive redirect and origin check from Host header
req.url resolves to the internal hostname in Docker standalone mode.
Read the Host header directly so redirects and CSRF origin checks use
whatever host the browser actually used (IP, hostname, or domain).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:44:11 -04:00
jerick
8b0fba5014 fix: use req.url as redirect base so host is preserved
req.nextUrl.origin resolves to localhost inside the container.
Using req.url preserves the Host header the browser sent, so
redirects work when accessing via IP or any external hostname.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:35:47 -04:00
jerick
874b022139 fix: bind app port to 0.0.0.0 so it's reachable from the network
127.0.0.1:3000 only accepted connections from localhost.
DB port intentionally stays on 127.0.0.1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:33:04 -04:00
jerick
d41ab0c4e8 fix: split auth config so middleware uses Edge-compatible module
NextAuth's Credentials provider pulls in Prisma -> pg -> Node.js crypto,
which crashes in the Edge runtime. Extract an auth.config.ts with only
JWT/session callbacks (no DB, no bcrypt) and use NextAuth(authConfig) in
middleware. auth.ts spreads the config and adds the Credentials provider.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:12:15 -04:00
jerick
0b4f9f5c0e fix: add setup service for db push/seed; update README
The production runner image has no node_modules, so prisma CLI and tsx
are unavailable. Add a Compose 'setup' profile service that uses the
builder stage (which has all dev tools) to run db push and db seed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:25:02 -04:00
55debd082b first build commit 2026-04-19 00:44:43 -04:00
bc271b7ce1 First build commit 2026-04-19 00:35:42 -04:00
jerick
832b093d4f first commit 2026-04-17 23:47:21 -04:00