A modern personal finance web app built with vanilla JavaScript and Firebase. Track income and expenses, set category budgets, automate recurring payments, visualize spending, and reach savings goals.
- Authentication — Sign up, sign in, password reset via email
- Dashboard overview — Expenses, income, net balance, and savings rate at a glance
- Expense tracking — Categories, notes, tags, search/filter, edit/delete, CSV export
- Income management — Multiple sources with edit support
- Budgets — Monthly limits with visual progress bars and one-time overrun alerts
- Recurring payments — Daily, weekly, or monthly auto-logged expenses
- Reports — Monthly/yearly category summaries
- Charts — Pie (by category), doughnut (income vs expense), line (trends)
- Savings goals — Progress bars and incremental contributions
Firebase is loaded via CDN modules — serve the folder over HTTP (required for ES modules):
# Python
python3 -m http.server 8080
# or npx
npx serve .Open http://localhost:8080/index.html.
PersonalFinanceManager/
├── index.html # Sign in
├── signup.html # Sign up
├── dashboard.html # Main app
├── styles/
│ ├── style.css # Auth pages
│ └── dashboard.css # Dashboard UI
└── scripts/
├── firebase.js # Firebase config & exports
├── auth.js # Login / signup / reset
├── utils.js # Formatting, toasts, helpers
└── dashboard.js # All dashboard logic
- HTML5, CSS3, ES6 modules
- Firebase Auth & Realtime Database
- Chart.js