Commit Graph
30 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 a4cde09d48 Add exclude from budget tracking option per account
Accounts (e.g. mortgage) can be toggled to exclude from budget tracking:
- Their transactions don't reduce envelope spending
- Their balance is excluded from Available to Budget
- Account card shows "excluded from budget" badge when enabled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 11:33:36 -04:00
nmemmertandClaude Sonnet 4.6 f38fceefba Include all asset accounts in Available to Budget
Previously only checked checking+savings; now includes investments and
any other non-liability account types.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 11:15:48 -04:00
nmemmertandClaude Sonnet 4.6 c1b7dcacb7 Fix git safe.directory error on upgrade
When running as root on an existing install, git refuses to operate on
a repo owned by a different user. Mark the install dir as safe before pulling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 10:58:37 -04:00
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 77f571fbcf Rewrite README for bare-metal install and current feature set
Replaces outdated container-focused README with accurate docs:
one-line install, 2FA, backup/restore migration guide, data storage layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:30:54 -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 08388431ac Remove leftover Firebase build-args from Docker workflow
App no longer uses Firebase — these were vestigial from an earlier version.
The exposed API key should be rotated in the Firebase console.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:22:48 -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 5c062fb2cb Install devDependencies for build, then prune
- Install all dependencies including TypeScript for build
- Remove devDependencies after build to keep image small
- Fixes TypeScript missing error during Docker build
2026-01-13 16:10:18 -05:00
nmemmert e6805c66a7 Fix sed command to handle special characters in encryption key
- Escape &, /, and \ characters in encryption key before sed
- Use | as delimiter instead of / to avoid conflicts
- Fixes 'unknown option to s' error on ZimaOS
2026-01-13 16:08:39 -05:00
nmemmert 7fbfab6b20 Update to Node.js 20 for Next.js compatibility
- Next.js 16 requires Node.js >= 20.9.0
- Changed base image from node:18-alpine to node:20-alpine
2026-01-13 16:06:55 -05:00
nmemmert 2c333d14eb Support both docker-compose and docker compose commands
- Auto-detect standalone docker-compose vs docker compose plugin
- Works on ZimaOS which uses docker compose (v2)
- Works on older systems with docker-compose (v1)
- Updated all script commands to use detected version
- Better error messages showing which version is being used
2026-01-13 16:05:03 -05:00
nmemmert 2e06475aab Fix deployment scripts for systems without openssl
- Added fallback to /dev/urandom when openssl is not available
- Added multiple fallback methods for encryption key generation
- Scripts now work on minimal systems like ZimaOS
- Maintains security with urandom-based key generation
2026-01-13 15:58:04 -05:00
nmemmert c7333651df Update installation docs for private repository
- Added clone and deploy method as primary option
- Noted that curl install only works for public repos
- Updated README.md with both installation methods
- Updated DEPLOYMENT.md with proper instructions
- Clone method works for both private and public repos
2026-01-13 15:55:05 -05:00
nmemmert d31eabed6b Add one-line curl installer for Docker deployment
- Created install.sh for automated installation
- Checks prerequisites (Docker, Docker Compose)
- Clones repository or downloads files
- Auto-generates encryption key
- Builds and starts container automatically
- Supports both git and non-git environments
- Updated README.md with one-line install command
- Updated DEPLOYMENT.md with curl installation section
- Provides detailed success/error messages

Usage: curl -fsSL https://raw.githubusercontent.com/nmemmert/budget/master/install.sh | bash
2026-01-13 15:52:03 -05:00
nmemmert 97c47cde1c Add comprehensive data persistence verification
- Added test-persistence.sh script to verify Docker volume mounting
- Enhanced DEPLOYMENT.md with detailed data persistence documentation
- Updated deploy.sh to verify data directory mount on deployment
- Added data/README.md explaining data storage and backup
- Updated data/.gitignore to include README.md
- Documented what data persists and what doesn't
- Added backup strategies and troubleshooting tips
2026-01-13 15:50:09 -05:00
nmemmert ad37bb57ae Add Docker deployment for ZimaOS
- Updated Dockerfile for local storage deployment (removed Firebase dependencies)
- Created docker-compose.yml with persistent data volumes
- Added deploy.sh script for automated deployment
- Created DEPLOYMENT.md with ZimaOS deployment guide
- Added .env.example for configuration template
- Updated .gitignore to protect sensitive data
- Fixed package.json to use port 7654 in production
- Cleared all test user data for fresh deployment
- Updated README with deployment section
2026-01-13 15:47:32 -05:00
nmemmert 0b9ab53266 Update README with dashboard customization features and Capsule branding 2026-01-13 15:42:32 -05: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
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
nmemmert e41e78f9a3 Initial commit from Create Next App 2025-10-24 07:45:04 -04:00