Live app → https://income-planner.vercel.app
A multi-user personal finance platform built with React 19, TypeScript, Vite, Tailwind CSS v4, and Supabase. Each user has a private account — data is stored securely in the cloud and accessible from any device.
- Multi-user authentication (email/password via Supabase Auth)
- Cloud data storage — access your data from any device, any browser
- Import CommBank / ANZ / NAB / Westpac CSV bank statements
- Auto-categorization with 200+ built-in keywords + smart-rules engine
- Budget buckets with monthly limits and rollover
- Income allocation frameworks (50/30/20, Pay Yourself First, Zero-Based, Custom)
- Savings goals with contribution tracking
- Recurring income & expense tracker with auto-detection
- Reports & analytics (cash flow, spending trends, net worth, savings rate)
- Australian ATO 2024–25 tax calculator
- Professional light theme — clean, sharp interface
- Full data export / import / reset
| Layer | Library |
|---|---|
| UI framework | React 19 |
| Language | TypeScript |
| Build tool | Vite 8 |
| Styling | Tailwind CSS v4 |
| Auth & database | Supabase |
| Charts | Recharts |
| CSV parsing | PapaParse |
| Icons | Lucide React |
| Routing | React Router v7 |
| Hosting | Vercel |
Requirements: Node.js 18+, a Supabase project.
# 1. Clone the repo
git clone https://github.com/Jiarui-ZH/Income_Planner.git
cd Income_Planner
# 2. Install dependencies
npm install --legacy-peer-deps
# 3. Add environment variables
cp .env.local.example .env.local
# Fill in your Supabase URL and anon keyCreate .env.local:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
# 4. Run the database schema
# Paste supabase/schema.sql into Supabase Dashboard → SQL Editor → Run
# 5. Start the dev server
npm run devOpen http://localhost:5173 in your browser.
- Create a project at supabase.com
- Go to SQL Editor and run the contents of
supabase/schema.sql - Copy your Project URL and anon public key from Project Settings → API
- Add them to
.env.localas shown above
- Push to GitHub
- Import the repo at vercel.com
- Add environment variables in Vercel → Settings → Environment Variables:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
- Deploy — every future
git pushauto-deploys
- All data is stored in your Supabase PostgreSQL database, isolated per user via Row Level Security (RLS)
- No user can access another user's data
- You as the project owner have full access via the Supabase dashboard
- Export your data anytime via Settings → Data → Export Backup