A simple, privacy-focused Progressive Web App (PWA) for tracking daily spending and managing budget cycles. All data is stored locally in your browserβno server, no tracking, completely private.
Repository: github.com/suhz/spending-tracker
- π Cycle-based budgeting - Set a max amount and end date for each spending cycle
- π‘ Smart daily limits - Automatically calculates recommended spending per day
β οΈ Overspending warnings - Visual alerts when exceeding limits- π Transaction tracking - Record all spending with notes
- βοΈ Edit & delete - Modify or remove transactions easily
- πΈ Balance carry-forward - Remaining balance transfers to next cycle
- π 100% Private - All data stored locally using IndexedDB
- π± Progressive Web App - Install on mobile/desktop, works offline
- π¨ Clean UI - Compact, focused design
- β‘ No dependencies - Pure HTML/CSS/JavaScript
Live Demo: suhz.github.io/spending-tracker/spending-tracker.html
Repository: github.com/suhz/spending-tracker
Daily Limit = Remaining Balance Γ· Days Remaining
The limit adjusts automatically based on your spending:
- Underspend β Next day's limit increases
- Overspend β Next day's limit decreases
- Self-balancing system helps you stay on budget
Cycle: RM 1000 for 30 days
Initial daily limit: RM 33.33/day
Day 1: Spend RM 10
β Balance: RM 990, Days left: 29
β New daily limit: RM 34.14/day β
Day 2: Spend RM 50
β Balance: RM 940, Days left: 28
β New daily limit: RM 33.57/day β οΈ
- Visit the live demo
- Or clone the repository:
git clone https://github.com/suhz/spending-tracker.git cd spending-tracker - Open
spending-tracker.htmlin your browser - Start using immediately!
- Open the app in your browser
- Look for "Install" prompt or menu option
- Click to install on your device
- Use like a native app, even offline
Deploy these 4 files to any static hosting:
spending-tracker.html
privacy.html
manifest.json
sw.js
Hosting Options:
- GitHub Pages (Free)
- Netlify (Free)
- Vercel (Free)
- Any static file hosting
- Set maximum spending amount (e.g., RM 3000)
- Set end date (e.g., 30 days from now)
- Click "Start Cycle"
- Enter amount and optional note
- Click "Record Spending"
- Orange warning appears if exceeding daily limit (you can still proceed)
- Balance - Shows remaining / total
- Today's Limit - Shows remaining / recommended for today
- Hover over any transaction to see edit/delete icons
- Click βοΈ to edit amount
- Click ποΈ to delete transaction
- Click "End Cycle" when ready for next period
- Remaining balance carries forward to new cycle
- Click "Toggle Test Mode" at bottom
- Set any date to simulate spending on different days
- Perfect for testing the dynamic limit calculation
Nothing. Seriously.
- All data stored in IndexedDB (built into your browser)
- Data never leaves your device
- No server, no backend, no database we control
- Each browser has its own isolated data
- You own 100% of your data
- Delete anytime by clearing browser data
- No account needed, no password to remember
- Frontend: Vanilla HTML/CSS/JavaScript (no frameworks)
- Storage: IndexedDB
- PWA: Service Worker for offline support
- β Chrome/Edge (Chromium)
- β Safari (iOS/macOS)
- β Firefox
- β Any modern browser with IndexedDB support
βββ spending-tracker.html # Main app
βββ privacy.html # Privacy policy page
βββ PRIVACY.md # Privacy policy (markdown)
βββ manifest.json # PWA manifest
βββ sw.js # Service worker
βββ README.md # This file
Cycles Table:
{
id: number (auto-increment),
max_amount: number,
start_date: string (ISO),
end_date: string (ISO),
is_active: number (0 or 1)
}Transactions Table:
{
id: number (auto-increment),
cycle_id: number,
amount: number,
date: string (ISO),
note: string
}Contributions welcome! Here are some ideas:
- Multiple account
- Multiple currencies
- Spending categories
- Export data to CSV/Excel
- Charts/graphs
- Budget templates
- Recurring transactions
- Dark mode
- Fork the repository: github.com/suhz/spending-tracker
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
Suhaimi Amir (@suhz)
- Built with privacy in mind
- No external dependencies or frameworks
- Inspired by the need for simple, private budget tracking
Suhaimi Amir
- Email: spending-tracker@suhz.net
- Threads: @suhz.me
- GitHub Issues: For bugs and feature requests
- Pull Requests: Contributions welcome
Made with β€οΈ for privacy-conscious budgeters by Suhaimi Amir (@suhz)
β Star this repo if you find it useful!