Budget Planner
All updates

v1.8 · Released · January 31, 2026

Liability Payments, Budget Scoping & Account Groups

Dedicated payment portal for credit cards and loans, budget envelope isolation, smart budget dropdown, 4-group account classification, CSV export, and budget replication.

Sidebar Redesign (shadcn)
  • Collapsible Icon Mode: Sidebar collapses to icons only (~48px) and expands on hover or rail click. State persisted via cookie.
  • Hover-to-Expand: Mouse enter on collapsed sidebar temporarily expands it; mouse leave collapses it back.
  • NavUser Footer: Avatar with initials + name + email in sidebar footer. Dropdown menu with "Profile" link and "Sign Out" action.
  • Mobile Sheet: shadcn Sidebar automatically renders as a sheet from left on mobile. SidebarTrigger hamburger in mobile header.
  • Transactions Group: Collapsible submenu with Income, Expenses, Transfers, Payments using shadcn's Collapsible pattern.
Profile Page + Notification Preferences
  • Personal Info Card: Inline editing for name (pencil icon toggle), read-only email with lock icon.
  • Security Card: Change password (or set password for Google-only users). Password strength indicator bar.
  • Linked Accounts Card: Google OAuth connection status with "Connected" badge or "Connect Google" button.
  • Notification Preferences Card: Dynamic toggles rendered from NotificationType table, grouped by category.
  • Relational Notification System: NotificationType + UserNotificationPreference tables. Adding new types requires zero code changes.
Budget + Income Email Notifications
  • Budget Warning (80%): Email sent when an expense causes a budget to cross 80% spent.
  • Budget Exceeded (100%): Email sent when budget crosses 100%. Red-themed with urgent tone.
  • Threshold-Crossing Only: Alerts fire only when a threshold is actually crossed — no spam.
  • Income Notification: Confirmation email on every income creation with amount, category, and account details.
  • Fire-and-Forget: Notifications are non-blocking. Failures never affect user actions.
  • Preference-Aware: Each notification checks NotificationService.isEnabled() before sending.
Automated Monthly Financial Reports
  • Monthly PDF Report: Editorial-style PDF with health score, income vs expense narrative, top categories with progress bars, budget check, debt snapshot, fund progress, and net worth change.
  • Email Delivery: Report attached as PDF to a summary email with health score, net result, net worth, and roast feedback.
  • Manual Trigger: "Send Report" dialog on Reports page with month/year picker. Report generated and delivered directly.
  • Monthly Subscription Toggle: Managed from Profile page's Notification Preferences card.
  • Job Queue (BullMQ): Redis-backed queue with retry, exponential backoff, and deduplication to prevent duplicate reports.
  • Cron Architecture: Two Vercel Crons — one adds jobs on the 1st of each month, another processes batches every minute.
  • Vercel Blob Storage: PDFs stored for future report history page.
  • Unsubscribe: One-click unsubscribe link in emails with confirmation page.
Forgot Password + Google OAuth
  • Forgot Password Flow: Request a password reset link from the login page. Secure token with 1-hour expiry sent via Gmail SMTP.
  • Reset Password Page: Enter new password with confirmation. Token validated server-side, password updated and token invalidated atomically.
  • Google OAuth Sign-In: "Sign in with Google" button on login and register pages using NextAuth Google Provider.
  • Auto-Link by Email: Google sign-in automatically links to existing accounts by email match. New users get a new account created.
  • Security: Cryptographically random tokens (crypto.randomUUID), one-time use, old tokens deleted on new request. Reset endpoint never reveals email existence.
  • Database: New AuthAccount model for OAuth linking, PasswordResetToken model for reset tokens, User.password now optional for Google-only users.
Gmail SMTP Email Integration
  • Email Service Module: New EmailService with send() and sendPasswordReset() methods for transactional emails.
  • Gmail SMTP Transport: Uses smtp.gmail.com with Google App Password authentication (500 emails/day).
  • Password Reset Template: Branded HTML email template with reset link and expiration notice.
  • Docker Integration: SMTP environment variables passed through to app container.
Liability Payments
  • New Payments Page: Dedicated /payments route for managing debt payments.
  • Payment Form: Pay from asset accounts to liability accounts with optional transaction fee.
  • Payment History: View all past payments with detailed breakdown and delete capability.
  • Smart Account Filtering: Form shows only asset accounts as source, only liabilities as destination.
  • Available Credit Display: Liability dropdown shows both debt owed and available credit.
  • Transfer Separation: Transfer form now restricted to asset-to-asset only.
  • Ledger Labels Fix: Payments now show as "DEBT PAYMENT" and "PAYMENT RECEIVED" with correct amount signs matching balance changes.
Sidebar Reorganization
  • Transactions Group: Income, Expenses, Transfers, and Payments grouped under collapsible section.
  • Collapsible Sections: Click to expand/collapse navigation groups.
  • Visual Hierarchy: Child items indented with border for clear grouping.
  • Mobile Support: Same grouped navigation in mobile sidebar drawer.
Expense/Income CSV Export
  • Export Button: New "Export CSV" button in the header of Expense and Income pages.
  • Filtered Export: Exports respect current filters (month and category for expenses, month for income).
  • Smart Filenames: Files named with context (e.g., expenses_january_2026_food.csv).
  • Mobile-Friendly: Button shows abbreviated "CSV" text on small screens.
Emergency Fund Calculation Fix
  • Hybrid Expense Calculation: Uses 3-month average of actual expenses with budget fallback.
  • Expense Source Indicator: Shows "Based on actual spending" or "Based on monthly budget".
  • Accountant-Approved: Actual spending provides more conservative coverage estimates.
Replicate Budgets
  • Replicate Budgets Dialog: New dialog accessible from the Budget page to copy budgets from any previous month.
  • Source Month Selection: Dropdown showing all months with existing budgets to copy from.
  • Target Month Selection: Choose destination month (current month + next 12 months).
  • Selective Replication: Checkbox selection to choose which budgets to replicate.
  • Amount Editing: Adjust budget amounts before replication if needed.
  • Duplicate Prevention: Automatically skips budgets that already exist in the target month.
Expense Category Filter
  • Category Filter Dropdown: New dropdown next to the search bar to filter expenses by category.
  • Generic DataTable Filters: Added reusable filter support to DataTable component.
  • Month-Scoped Filtering: Filter applies within the selected month only.
  • Auto-Reset on Month Change: Category filter resets to "All" when switching months.
Budget Detail View Scoping
  • Envelope Isolation: Budget ledger now shows only expenses linked to that specific budget, not all expenses in the category.
  • Unlinked Expenses Section: Expenses in the same category but not linked to any budget are shown in a separate section with muted styling.
  • Accurate Metrics: Budget progress, remaining amount, and daily pace now reflect only the linked expenses.
Smart Budget Dropdown
  • Sectioned Dropdown: Budget selector in expense form now groups budgets by current month (primary) and previous months (secondary).
  • 3-Month Lookback: Previous months section shows budgets from up to 3 months back with month labels.
  • Auto-Reset on Month Change: Budget selection clears automatically when the expense date month changes.
  • Color-Coded Remaining: Each budget option shows remaining amount with health-based colors (green/amber/red).
Account Type Separation
  • 4-Group Classification: Accounts page now groups accounts into Liquid Assets, Savings & Investments, Liabilities, and Funds & Goals.
  • Group Headers: Each group has a colored header with icon, label, and balance subtotal.
  • Dashboard Update: Accounts card now shows 3 distinct groups (Liquid, Savings, Liabilities) with color-coded icons instead of binary asset/liability split.
  • Credit Utilization & Fund Progress: Inline progress bars preserved within their respective groups.
Financial Health Check
  • Health Check Tab: New dedicated tab in Financial Analytics with a comprehensive 0-100 financial health score.
  • 5-Pillar Scoring: Weighted assessment across Solvency (25%), Liquidity (20%), Savings (20%), Debt Management (20%), and Cash Flow (15%).
  • Score Ring Visualization: Animated SVG ring with health-colored glow indicating overall financial health.
  • Pillar Breakdown: Always-visible pillar rows with progress bars, grades (A-F), and individually expandable details with recommendations.
  • Brutally Honest Feedback: Roast-style messages that celebrate good performance and call out bad habits — scaled by severity.
  • Weakest Pillar Highlight: Lowest-scoring pillar highlighted with yellow border and surfaced as top recommendation.
  • Fund Health Integration: Fund health report displayed alongside the health score for a complete financial picture.
Income vs Expense Ratio Chart
  • New Chart in P&L Tab: Dual-axis composed chart showing expense-to-income ratio over time with savings gap area.
  • Health Zone Reference Lines: Color-coded thresholds at 70% (healthy), 90% (tight), and 100% (critical).
  • Color-Coded Dots: Each data point colored by health zone for instant visual assessment.
  • Summary Row: Average ratio, best/worst months, and trend direction (improving/stable/worsening).
Dashboard Layout Reorder
  • Strategic Positioning: Funds section moved above Recent Transactions and Accounts grid.
  • UX Philosophy: Strategic goals (funds, savings targets) now visible before operational data (individual transactions).
Feature Request Form & Public Changelog
  • Public Changelog: Product updates accessible at /changelog without authentication.
  • Feature Request Form: Embedded form with title, description, and category (Bug, Enhancement, New Feature, UI/UX).
  • Dual Access: Authenticated users auto-fill email; public visitors provide email manually.
  • Email Notification: Styled HTML email sent to admin on each submission.
  • Rate Limiting: Redis-based IP rate limit (3 submissions per hour) to prevent spam.
SMS Notifications
  • PH SMS API Integration: Free Philippine SMS API with BullMQ rate-limited queue (1 per 10 seconds).
  • Dual Channel Toggles: Email and SMS toggle columns in Profile notification preferences.
  • Roast-Style Messages: Tiered roast templates for budget alerts, income notifications, and monthly reports.
  • Test SMS Button: Send a test SMS from the Profile page to verify your number works.
  • Phone Number Field: Add your PH mobile number (+639XXXXXXXXX) in Personal Information.
Bug Fixes
  • Fixed Month Off-by-One Error: Resolved timezone issue where selecting February would create budgets for January.
  • Fixed Liability Ledger Running Balance: Account ledger now correctly calculates running balance for credit cards and liability accounts.
  • Fixed Empty Amount Field UX: Amount fields now start empty instead of showing "0", allowing direct input.