A modern, full-featured personal finance management application built with Vite, React 19, TypeScript, Tailwind CSS 4, shadcn/ui, Recharts, and Supabase.
Get started in 15 seconds:
./install.sh # Automated installation - Choose Complete Schema- ๐ฏ Quick Install Card - Desk reference (print me!)
- ๐๏ธ Database Options - Visual schema guide
- โก Quick Start - One-page setup
- ๐ Installation Guide - Complete setup
- โ Installation Checklist - Verify setup
- ๐ Schema Comparison - Core vs Complete
- ๐ Migration Complete - What's new
- ๐ All Docs - Complete index
# 1. Install database (15 seconds)
./install.sh # Choose option 2: Complete Schema
# 2. Configure environment
cp env.example.local .env.local
# Add your Supabase keys
# 3. Start app
npm install && npm run dev-
Interactive Dashboard
- Real-time financial analytics and visualizations
- Income vs Expenses comparison charts (6-month trends)
- Category-wise spending breakdown with pie charts
- Balance trend line charts over time
- Monthly financial summaries with quick stats cards
- Time period filtering (7 days, 30 days, 90 days, 1 year, all time)
-
๐ฐ Transaction Management
- Track income and expenses with detailed categorization
- Add, edit, and delete transactions seamlessly
- Calendar-based date picker for accurate record-keeping
- Rich descriptions and notes for each transaction
- Real-time balance calculations with opening balance support
- CSV export functionality for reporting
-
๐ท๏ธ Smart Categorization
- Custom color-coded categories for income and expenses
- Visual category icons and badges
- Category-specific budget limits (monthly/yearly)
- Budget vs actual spending tracking
- Category usage analytics
-
๐ฏ Savings Goals
- Set financial targets with deadlines
- Visual progress tracking with progress bars
- Add contributions to goals incrementally
- Goal completion notifications
- Multiple simultaneous savings goals
-
๏ฟฝ Advanced Budgeting
- 50/30/20 budget rule implementation
- Custom budget allocation with flexible percentages
- Automatic category classification (needs/wants/savings)
- Budget vs actual spending comparison
- Smart recommendations based on spending patterns
- Real-time utilization tracking
-
๐ฎ Financial Forecasting
- Cash flow projections (3/6/12 months)
- Burn rate calculations
- Future balance predictions based on trends
- What-if scenario analysis (salary increase, loan payoff, expense reduction, etc.)
- Scenario comparison tools
- Financial health indicators
-
๏ฟฝ๐ Notifications & Alerts
- Budget overspending alerts
- Savings goal milestone notifications
- Real-time toast notifications for all actions
- Notification history and management page
- Spending threshold warnings
-
๐ค Data Management
- Export transactions to CSV (Excel-compatible)
- Full backup/restore functionality (JSON format)
- Bulk data import/export
- Data integrity validation
- Automatic data persistence
-
Theme System
- ๐ Light Mode: Clean, bright interface
- ๐ Dark Mode: Eye-friendly for low-light environments
- ๐ป System Mode: Automatically matches OS preferences
- Persistent theme storage across sessions
- Smooth theme transitions with no flicker
-
๐ฑ Responsive Design
- Mobile-first approach with collapsible sidebar
- Touch-optimized controls (44x44px minimum tap targets)
- Adaptive layouts for all screen sizes (mobile/tablet/desktop)
- Progressive Web App (PWA) support - installable on mobile
- Works offline with service workers
-
โก Performance Optimizations
- Lazy loading for optimal initial load times
- Smart data caching with TanStack Query (75% faster after first visit)
- Optimized bundle splitting and code chunks
- Skeleton loaders for smooth perceived performance
- React 19 with automatic batching
-
โฟ Accessibility
- WCAG AA compliant
- Full keyboard navigation support
- Screen reader friendly with ARIA labels
- High contrast mode support
- Focus management and visible focus indicators
- Framework: Vite 7 + React 19 + TypeScript 5
- Routing: React Router DOM v7
- Styling: Tailwind CSS 4 with PostCSS
- UI Library: shadcn/ui (Radix UI primitives)
- Charts: Recharts 3
- Icons: Lucide React
- Animations: tw-animate-css
- Backend: Supabase (PostgreSQL + Auth)
- Authentication: Supabase Auth with email/password
- Database: PostgreSQL with Row Level Security (RLS)
- Real-time: Supabase Realtime subscriptions
- State Management: Zustand 5 (lightweight and performant)
- Data Fetching: TanStack Query v5 (React Query) with automatic caching
- Form Validation: Zod 4 with TypeScript integration
- Date Handling: date-fns 4
- Testing: Vitest 4 + React Testing Library
- Linting: ESLint 9 with modern config
- Error Tracking: Sentry React for production monitoring
- PWA: vite-plugin-pwa for Progressive Web App support
- Type Safety: Full TypeScript with strict mode enabled
Want to get started quickly? Follow our streamlined installation guide:
๐ Complete Installation Guide ๐
Or use the automated installation script:
# Clone the repository
git clone https://github.com/Motakabbir/budget_manager.git
cd budget_manager
# Run automated installation
./install.sh- Node.js 18+ and npm
- A Supabase account (sign up here)
-
Clone the repository:
git clone https://github.com/Motakabbir/budget_manager.git cd budget_manager -
Install dependencies:
npm install
-
Set up Supabase:
- Create a new project in Supabase Dashboard
- Go to Project Settings > API
- Copy your Project URL and anon public key
-
Configure environment variables:
cp env.example.local .env.local
- Update
.env.localwith your Supabase credentials:VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
- Update
-
Set up the database (One Command):
- Go to Supabase Dashboard โ SQL Editor โ New Query
- Copy ALL content from
src/lib/supabase/schema.sql - Paste into SQL Editor and click Run
- โ Done! All tables, indexes, and security policies created
-
Start the app:
npm run dev
-
Open your browser: http://localhost:5173
The single schema file (src/lib/supabase/schema.sql) includes:
- โ 6 tables with relationships
- โ 24 Row Level Security policies
- โ 12 performance indexes
- โ 1 helper function
- โ Complete security setup
Time needed: ~30 seconds
For detailed migration guides:
- ๐ Installation Guide - Complete step-by-step
- ๐ Quick Migration - Quick reference
- ๐ Migration Guide - Detailed info
- ๐ Migration Organization - File structure
budget_manager/
โโโ src/
โ โโโ pages/ # Main page components
โ โ โโโ AuthPage.tsx # Authentication (sign in/up)
โ โ โโโ DashboardLayout.tsx # Layout wrapper with sidebar
โ โ โโโ DashboardPage.tsx # Main dashboard with charts
โ โ โโโ IncomePage.tsx # Income transaction management
โ โ โโโ ExpensesPage.tsx # Expense transaction management
โ โ โโโ CategoriesPage.tsx # Category management
โ โ โโโ NotificationsPage.tsx # Notification center
โ โ โโโ SettingsPage.tsx # Settings & savings goals
โ โ
โ โโโ components/ # Reusable components
โ โ โโโ ui/ # shadcn/ui components (20+ components)
โ โ โ โโโ button.tsx
โ โ โ โโโ card.tsx
โ โ โ โโโ dialog.tsx
โ โ โ โโโ input.tsx
โ โ โ โโโ ...
โ โ โโโ dashboard/ # Dashboard-specific components
โ โ โ โโโ QuickStatsCards.tsx
โ โ โ โโโ ChartsSection.tsx
โ โ โ โโโ MonthlyBreakdownCards.tsx
โ โ โ โโโ SpendingAlertsCard.tsx
โ โ โ โโโ NotificationStatusWidget.tsx
โ โ โ โโโ TimePeriodFilter.tsx
โ โ โโโ loading/ # Loading states
โ โ โ โโโ LoadingSkeletons.tsx
โ โ โโโ notifications/ # Notification components
โ โ โ โโโ notification-panel.tsx
โ โ โ โโโ notification-item.tsx
โ โ โโโ settings/ # Settings components
โ โ โ โโโ DataManagementCard.tsx
โ โ โ โโโ NotificationSettings.tsx
โ โ โโโ ErrorBoundary.tsx # Error boundary wrapper
โ โ โโโ sidebar.tsx # Navigation sidebar
โ โ โโโ top-bar.tsx # Top navigation bar
โ โ โโโ footer.tsx # Footer component
โ โ โโโ theme-toggle.tsx # Theme switcher
โ โ โโโ page-header.tsx # Page header component
โ โ โโโ responsive-grid.tsx # Responsive grid layout
โ โ
โ โโโ lib/ # Utilities and configurations
โ โ โโโ supabase/ # Supabase configuration
โ โ โ โโโ client.ts # Supabase client instance
โ โ โ โโโ database.types.ts # Generated TypeScript types
โ โ โ โโโ schema.sql # Complete database schema
โ โ โโโ store/ # Zustand state management
โ โ โ โโโ index.ts # Global state store
โ โ โโโ hooks/ # Custom React hooks
โ โ โ โโโ use-toast.ts
โ โ โ โโโ use-mobile.ts
โ โ โ โโโ ...
โ โ โโโ providers/ # Context providers
โ โ โ โโโ theme-provider.tsx
โ โ โโโ utils/ # Utility functions
โ โ โ โโโ export.ts # CSV/JSON export utilities
โ โ โ โโโ ...
โ โ โโโ validations/ # Zod validation schemas
โ โ โโโ sentry.ts # Error tracking config
โ โ โโโ utils.ts # Common utilities
โ โ
โ โโโ test/ # Test setup and utilities
โ โ โโโ setup.ts # Vitest configuration
โ โ โโโ mocks/ # Mock data and functions
โ โ โโโ utils/ # Test utilities
โ โ
โ โโโ App.tsx # Main app component with routing
โ โโโ main.tsx # App entry point
โ โโโ index.css # Global styles
โ โโโ vite-env.d.ts # Vite type declarations
โ
โโโ docs/ # Documentation
โ โโโ guides/ # User guides
โ โ โโโ QUICK_START.md
โ โ โโโ SETUP_GUIDE.md
โ โ โโโ FEATURES_LOCATION_GUIDE.md
โ โ โโโ PROJECT_SUMMARY.md
โ โ โโโ BUDGET_FEATURE_SETUP.md
โ โ โโโ NOTIFICATION_IMPLEMENTATION_GUIDE.md
โ โ โโโ NEW_FEATURES_GUIDE.md
โ โ โโโ RESPONSIVE_DESIGN.md
โ โ โโโ VERCEL_DEPLOYMENT.md
โ โ โโโ ...
โ โโโ database/ # Database documentation
โ โโโ DATABASE_SETUP.md
โ โโโ MIGRATION_GUIDE.md
โ โโโ QUICK_MIGRATION.md
โ โโโ migration_add_budgets.sql
โ โโโ migration_add_notifications.sql
โ โโโ migration_add_recurring.sql
โ โโโ ...
โ
โโโ public/ # Static assets
โ โโโ manifest.json # PWA manifest
โ
โโโ package.json # Dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ vite.config.ts # Vite configuration
โโโ vitest.config.ts # Vitest test configuration
โโโ eslint.config.mjs # ESLint configuration
โโโ postcss.config.mjs # PostCSS configuration
โโโ components.json # shadcn/ui configuration
โโโ vercel.json # Vercel deployment config
โโโ env.example.local # Environment variables template
โโโ README.md # This file
| Table | Description | Key Features |
|---|---|---|
| profiles | User profile information | Auto-created on signup |
| categories | Income/expense categories | Color-coded, user-specific |
| transactions | Financial transactions | Income & expenses with categories |
| savings_goals | User savings targets | Progress tracking, deadlines |
| user_settings | User preferences | Opening balance, theme, notifications |
| category_budgets | Budget limits per category | Monthly/yearly periods |
| recurring_transactions | Recurring transaction templates | Auto-generation support |
| notifications | System notifications | Budget alerts, goal updates |
- โ Row Level Security (RLS) enabled on all tables
- โ Users can only access their own data
- โ Secure authentication with JWT tokens
- โ API key protection with environment variables
- โ SQL injection prevention with parameterized queries
profiles (1) โโโโ (*) transactions
โ
โโโโโ (*) categories
โ โโโโโ (*) category_budgets
โ
โโโโโ (*) savings_goals
โ
โโโโโ (1) user_settings
โ
โโโโโ (*) recurring_transactions
โ
โโโโโ (*) notifications
For complete database documentation, see docs/database/
- Quick Stats Cards: Balance, Income, Expenses, Transaction count
- Income vs Expenses Chart: 6-month bar chart comparison
- Category Breakdown: Pie chart showing spending by category
- Balance Trend: Line chart tracking balance over time
- Monthly Breakdown: Card view of monthly summaries
- Spending Alerts: Budget overspending warnings
- Notification Widget: Recent notifications summary
- Time Period Filter: Quick filters (7d, 30d, 90d, 1y, all)
- Add new income transactions with date picker
- View all income in a responsive table
- Edit/delete existing income entries
- Category filtering
- Search functionality
- Export to CSV
- Real-time balance updates
- Add new expense transactions
- View all expenses in a table
- Edit/delete expense entries
- Category filtering and search
- Export to CSV
- Budget comparison per category
- Create custom income/expense categories
- Color picker for visual organization
- Edit category names and colors
- Delete unused categories
- View category usage statistics
- Budget limit assignment
- View all system notifications
- Mark notifications as read/unread
- Filter by notification type
- Clear notification history
- Budget alerts and goal updates
- Real-time notification updates
- Profile Section: Update name and email
- Opening Balance: Set initial account balance
- Savings Goals: Create and track financial goals
- Category Budgets: Set spending limits
- Data Management:
- Export all data as JSON backup
- Import previously exported backup
- CSV export for transactions
- Account Actions: Change password, sign out
- Notification Settings: Configure alert preferences
Run the test suite:
# Run all tests
npm test
# Run tests with UI
npm run test:ui
# Run tests with coverage
npm run test:coverage
# Run tests once (CI mode)
npm run test:runTesting stack:
- Vitest - Fast unit test runner
- React Testing Library - Component testing
- jsdom - DOM simulation
- @testing-library/user-event - User interaction testing
| Command | Description |
|---|---|
npm run dev |
Start development server on port 3000 |
npm run build |
Build for production (TypeScript + Vite) |
npm run preview |
Preview production build locally |
npm run lint |
Run ESLint on the codebase |
npm test |
Run Vitest tests in watch mode |
npm run test:ui |
Run tests with Vitest UI |
npm run test:coverage |
Generate test coverage report |
npm run test:run |
Run tests once (CI mode) |
- Push your code to GitHub
- Import repository in Vercel
- Configure build settings:
- Framework Preset:
Vite - Build Command:
npm run build - Output Directory:
dist
- Framework Preset:
- Add environment variables:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
- Deploy! ๐
The vercel.json file is already configured for SPA routing.
For detailed instructions, see Vercel Deployment Guide
- Netlify: Works out of the box with Vite
- Cloudflare Pages: Fast global CDN
- AWS Amplify: AWS-hosted solution
- GitHub Pages: Free hosting for public repos
- ๐ Quick Start Guide - Get started in 5 minutes
- ๐ง Setup Guide - Detailed setup instructions
- ๐๏ธ Database Setup - Complete database documentation
- ๐ฏ Features Guide - Where to find features
- ๐ Project Summary - Project overview
- ๐ Deployment Guide - Deploy to production
- Budget Feature Setup
- Notification Implementation
- New Features Guide
- Responsive Design
- System Improvements
Edit src/index.css to customize colors:
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--primary: 221.2 83.2% 53.3%;
/* ... more variables */
}All UI components are in src/components/ui/ and can be customized individually.
- Create page component in
src/pages/ - Add route in
src/App.tsx - Add navigation item in
src/components/sidebar.tsx - Add any database migrations in
docs/database/
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Please ensure:
- Code follows TypeScript and ESLint rules
- All tests pass (
npm test) - New features include tests
- Documentation is updated
- Chart labels may show TypeScript warnings (Recharts typing limitation)
- Export utility has some
anytypes (can be improved) - PWA may require manual refresh after updates
These are non-blocking and don't affect functionality.
- Recurring Transactions: Automatic transaction generation
- Advanced Filtering: Multi-criteria search and filtering
- Budget Forecasting: Predict future spending patterns
- Receipt Upload: Attach images to transactions
- Multi-Currency: Support for multiple currencies
- Bank Integration: Connect to bank accounts via Plaid
- Shared Budgets: Family/team budget sharing
- Mobile App: React Native mobile application
- Reports & Insights: Advanced analytics and reports
- Tax Categorization: Expense categorization for taxes
This project is licensed under the MIT License - see the LICENSE file for details.
You are free to:
- โ Use commercially
- โ Modify
- โ Distribute
- โ Private use
Built with amazing open-source technologies:
- React - UI library
- Vite - Build tool
- TypeScript - Type safety
- Tailwind CSS - Styling
- shadcn/ui - UI components
- Supabase - Backend and database
- Recharts - Charting library
- TanStack Query - Data fetching
- Zustand - State management
Need help? Here's how to get support:
- ๐ Check the documentation in the
/docsfolder - ๐ Open an issue on GitHub Issues
- ๐ฌ Start a discussion on GitHub Discussions
- Version: 1.0.0
- Status: โ Production Ready
- Last Updated: October 29, 2025
- Language: TypeScript
- License: MIT
Built with โค๏ธ using Vite, React 19, TypeScript, and Supabase