Commit Graph
17 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 16ab65d4ec Add Available to Budget envelope view and fix transaction/account delete bugs
- Envelopes view: "Available to Budget" card shows checking+savings balance
  minus total envelope allocations — turns red if over-allocated
- Income transactions in ManualEntry: envelope picker labeled clearly,
  green highlight, helper text explaining effect on Available to Budget,
  default option "Leave in Available to Budget"
- Fix account delete: now removes the account's transactions and
  recalculates envelope spending
- Fix transaction edit/delete: use functional state updater to avoid
  stale closure bug on accounts/envelopes recalculation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 10:55:41 -04:00
nmemmertandClaude Sonnet 4.6 028265dd60 Add bare-metal installer and in-app backup/restore
install.sh: no-Docker one-liner for cloud VPS
- Installs Node.js 20 via NodeSource if missing (Ubuntu/Debian/RHEL/Rocky)
- Clones to /opt/capsule, builds, creates a systemd service
- Re-running upgrades in place (git pull + rebuild)

Backup & Restore (Settings → Backup & Restore tab):
- Download Backup: streams all data/ as a .tar.gz (pure Node zlib, no deps)
- Restore: upload a .tar.gz to replace server data, auto sign-out after

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:29:45 -04:00
nmemmertandClaude Sonnet 4.6 52293d7db3 Add TOTP 2FA and retroactive rule application
- TOTP-based two-factor authentication (RFC 6238, HMAC-SHA1): setup, enable, disable in Settings → Password & Security
- Login flow: password verified first, then temp token issued for 5-min TOTP window before full session is granted
- QR code generated server-side via `qrcode` package for scanning with any authenticator app
- "Run Rules Now" button in TransactionRulesManager applies auto-categorization rules to existing uncategorized expenses

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:20:44 -04:00
nmemmertandClaude Sonnet 4.6 5339e9818a Add account sharing, Get Paid schedule, recurring manager, overspend warnings, mobile nav
Account sharing:
- fileStorage: add shares.json with createShare/listShares/getShareData/revokeShare
- /api/share/account: real implementation using session token
- /api/share/list: GET endpoint returning owned + received shares
- /api/share/data: GET endpoint to fetch a shared account's data
- SharedAccountManager: use session token, load existing shares, revoke support
- AccountManagement: render SharedAccountManager per-account
- page.tsx: load received shares on login, show "Shared with me" cards in Accounts view

Get Paid schedule:
- PaycheckSchedule type: weekly/biweekly/semimonthly/monthly with day config
- computeNextPayday(): calculates next payday from today
- Schedule UI in GetPaid modal with live "Next payday: ..." preview
- Schedule persisted to localStorage template

Recurring transaction manager:
- Fix biweekly support (was missing)
- Show "due now" vs "upcoming" with amber badge for overdue
- Render in Transactions view; onApplyRecurring creates new transactions + updates lastAppliedDate

Envelope overspending:
- Red warning banner at top of Envelopes view listing overspent envelopes
- Red ring on individual overspent envelope cards

Mobile layout:
- Fixed bottom tab bar (Home/Accounts/Txns/Envelopes/More) on sm: and below
- Active tab highlighted in blue
- Main content padded to avoid being hidden by bottom nav

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:10:10 -04:00
nmemmertandClaude Sonnet 4.6 18fe6b5141 Add CSV import UI, recurring transactions, and security fixes
- FileUpload: full rewrite with column mapping, split debit/credit columns,
  negate toggle, duplicate detection, OFX/QFX support, and live preview
- ManualEntry: add recurring transaction checkbox with weekly/biweekly/monthly/yearly options
- DataInput: pass existingTransactions to FileUpload for duplicate detection
- Settings: use session token for delete-account; replace reset-code password
  flow with proper current+new password form
- page.tsx: fix TypeScript build error by mapping date strings to Date objects
  after setup wizard completes
- SetupWizard: fix hasSplit boolean type error

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:56:59 -04:00
nmemmertandClaude Sonnet 4.6 8f9e9269ec Add CSV import to setup wizard
- New csv-import wizard step with file upload, auto column detection, column mapping UI, split-debit/credit support, and 5-row preview
- Imports transactions and auto-calculates account balance from CSV data
- Uses pendingImportedTransactions state (not side-channel) to reliably pass transactions through to saveUserData
- handleSetupComplete reloads from server so imported transactions appear in the UI immediately after wizard completes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:45:17 -04:00
nmemmertandClaude Sonnet 4.6 20ea25f4de Major feature release: security hardening + Goals, Rules, search, charts
Security:
- Replace SHA-256 password hashing with bcrypt (cost 12) + timing-safe compare
- Introduce server-side session tokens (x-session-token header); drop x-user-id
- Add /api/auth/logout endpoint to invalidate sessions
- Enforce 8-char minimum password server-side
- Fix password reset: now uses real signed tokens with 1-hour TTL

Features:
- Goals: savings goals with progress bars, target dates, add/withdraw funds
- Auto-categorization Rules: keyword → envelope mapping applied on transaction add
- Transaction search/filter: description, account, envelope, date range
- Transaction table: shows envelope color dot, running balance column
- Monthly Spending History chart (last 6 months income vs expenses bar chart)
- Spending Insights: month-over-month comparison + overspent envelope callouts
- Budget progress expanded: per-envelope bars with rollover indicator
- Envelope rollover toggle: unspent funds can carry forward
- Recurring transactions auto-applied on login
- Save indicator in nav (Saving… / Saved ✓ / Save failed)
- Nav overflow fixed: all tabs scroll horizontally instead of clipping
- PWA manifest added for home-screen install support

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:22:24 -04:00
nmemmertandClaude Sonnet 4.6 8814423fa6 Fix modal overlays — replace deprecated Tailwind v4 bg-opacity syntax
All 11 modal backdrop divs used `bg-black bg-opacity-50` which Tailwind v4
dropped, causing solid-black overlays. Replaced with `bg-black/50` across
AuthModal, AccountManagement, EnvelopeCreate, EnvelopeEdit, GetPaid,
SetupWizard, TransactionEdit, and page.tsx.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:08:26 -04:00
nmemmert 4d7f301c61 Add customizable dashboard with drag-and-drop section reordering
- Added Capsule app icon and branding assets
- Implemented dashboard customization panel with drag-and-drop interface
- Added budget progress tracking and quick actions sections
- Enhanced dashboard with clickable summary cards (Assets, Debt, Balance, Envelopes, Transactions)
- Increased spacing between sections for better readability
- Users can now show/hide and reorder dashboard sections
- Fixed account balance normalization for liabilities
- Improved analytics charts with visibility controls
2026-01-13 15:40:23 -05:00
nmemmert 2dcd7b29fb feat: implement Capsule branding kit with custom colors and typography
- Add CSS variables for brand colors: Primary Blue (#1E73BE), Finance Green (#28A745), Cloud Blue (#A7D8F8), Dark Navy (#0F2C4C), Neutral Gray (#F4F4F4)
- Import Montserrat and Roboto fonts from Google Fonts
- Update navigation bar with brand colors (navy logo, blue active state, green Get Paid button)
- Update landing page hero section with brand color accents and button styling
- Update AuthModal, GetPaid, Settings, and DemoWizard components to use CSS variables
- Apply brand colors to info boxes and secondary UI elements
- Improve visual consistency across all app screens with cohesive color palette
2026-01-13 14:04:35 -05:00
nmemmert 1b269dedd9 Fix envelope updates, balance persistence, Get Paid duplication, form readability, and income allocation carryover 2026-01-13 13:38:27 -05:00
nmemmert caa6020ae8 Fix 2025-11-10 12:57:48 -05:00
Nate Emmert 959249ab22 Migrate from Firebase to file-based storage system
- Remove Firebase dependency and all Firebase code
- Implement local file-based storage with encryption
- Create custom authentication system with password hashing
- Add API routes for auth (register/login) and data operations
- Create FileStorageService for server-side file I/O
- Add AuthService for client-side authentication wrapper
- Update all components to use new storage system
- Add comprehensive documentation (FILE_STORAGE.md, MIGRATION_SUMMARY.md)
- Improve security with AES-GCM encryption and SHA-256 password hashing
- Add ErrorBoundary component for better error handling
- Fix multiple bugs: date serialization, transaction deletion, envelope calculations
2025-11-08 14:03:26 -05:00
nmemmert 3f4c60ab67 Restore Firestore save logic in SetupWizard with proper user authentication 2025-10-27 11:31:56 -04:00
nmemmert 884dc7e835 Fix SetupWizard: remove Firestore save and fix text visibility 2025-10-27 11:26:57 -04:00
nmemmert 2665bde810 fixed run error 2025-10-24 11:10:08 -04:00
nmemmert a79dddff60 the start 2025-10-24 10:23:12 -04:00