A modern, privacy-focused expense and income tracker with multi-currency support built as a Progressive Web App (PWA)
SpendTrail is a lightweight, privacy-first expense tracker that runs entirely in your browser. No servers, no accounts, no tracking - just you and your financial data. Built with vanilla JavaScript and modern web technologies, it offers a seamless experience across all devices while keeping your data completely private.
- 📊 Income & Expense Tracking - Simple, intuitive entry system with categories and notes
- 💱 Multi-Currency Support - Choose from 30 currency symbols (₹, $, €, £, ¥, and more)
- 📈 Visual Analytics - Beautiful pie charts, bar graphs, and trend analysis
- 💰 Real-time Balance - Instant overview of your financial status
- 📁 Category Management - Organize transactions with custom categories
- 🔍 Smart Search - Search transactions by category or note in real-time
- 📅 Custom Statements - Generate reports for any date range
- 📄 Professional PDF Export - Beautiful, color-coded reports with tables and summaries
- 💾 Backup & Restore - Simple JSON or AES-256 encrypted backups
- 📋 Complete Ledger - View all entries with powerful filtering and search
- 🔒 Privacy First - All data stored locally using localStorage
- 🌙 PWA Support - Install as native app on any device
- 📱 Fully Responsive - Optimized for mobile, tablet, and desktop
- ⚡ Offline Support - Works without internet connection
- 🎨 Modern UI - Clean, minimalist design with smooth animations
SpendTrail supports 30 currency symbols from around the world:
Asia: INR, JPY, CNY, SGD, HKD, MYR, THB, IDR, PKR, BDT, KRW
Europe: EUR, GBP, CHF, SEK, NOK, DKK, PLN, TRY, RUB
Americas: USD, CAD, BRL, MXN, AUD, NZD
Middle East: AED, SAR, QAR
Africa: ZAR
Note: Currency selection only changes the display symbol. No conversion calculations are performed.
No installation required! Visit: SpendTrail App
Android / Chrome
- Visit the SpendTrail App
- Tap the menu (⋮) in the top-right corner
- Select "Install app" or "Add to Home screen"
- SpendTrail will be added to your home screen
iOS / Safari
- Visit the SpendTrail App
- Tap the Share button (square with arrow)
- Scroll down and select "Add to Home Screen"
- Tap "Add" to confirm
Desktop (Chrome, Edge, Brave)
- Visit the SpendTrail App
- Look for the install icon (⊕) in the address bar
- Click it and select "Install"
- SpendTrail will open as a standalone app
| Category | Technology |
|---|---|
| Frontend | Vanilla JavaScript (ES6+) |
| Styling | Custom CSS3 with Flexbox/Grid |
| Storage | LocalStorage API |
| Charts | Chart.js v4.4.0 |
| PWA | Service Workers, Web App Manifest |
| jsPDF v2.5.1 | |
| Encryption | CryptoJS v4.1.1 (AES-256) |
- A modern web browser (Chrome, Firefox, Safari, Edge)
- Python 3 (optional, for local server)
# Clone the repository
git clone https://github.com/mananmadani/SpendTrail.git
# Navigate to directory
cd SpendTrail
# Option 1: Open directly
# Simply open index.html in your browser
# Option 2: Use local server (recommended)
python -m http.server 8000
# Visit http://localhost:8000SpendTrail/
├── index.html # Main HTML file
├── app.js # Core application logic
├── style.css # Styles and themes
├── manifest.json # PWA manifest for installable app
├── service-worker.js # Service worker for offline support
├── SpendTrail.png # App icon (1024x1024)
├── screenshots/ # App screenshots for README
│ ├── dashboard.jpg
│ ├── add-transaction.jpg
│ ├── analytics.jpg
│ ├── ledger.jpg
│ └── pdf-export.jpg
├── README.md # Project documentation
├── LICENSE # MIT License
└── .gitignore # Git ignore rules
| File | Purpose |
|---|---|
index.html |
Main application entry point |
app.js |
Core JavaScript logic for transactions, analytics, and storage |
style.css |
All styling including responsive design and animations |
manifest.json |
PWA configuration for app installation |
service-worker.js |
Enables offline functionality and app caching |
SpendTrail.png |
App icon used for PWA and branding |
screenshots/ |
Directory containing app screenshots for documentation |
README.md |
This file - comprehensive project documentation |
LICENSE |
MIT License terms and conditions |
.gitignore |
Specifies files to exclude from version control |
- Go to More → Currency Symbol
- Select your preferred currency from the dropdown
- All amounts will now display with your chosen symbol
- Click the Add tab in the bottom navigation
- Toggle between Income or Expense
- Enter:
- Amount (e.g., 500.00)
- Category (e.g., Food, Salary, Rent)
- Date (defaults to today)
- Note (optional)
- Click "Add Income" or "Add Expense"
- Go to Insights → All Entries
- Use the search bar to filter by category or note
- Search works in real-time as you type
- Combine with Income/Expense filters for precise results
- Go to Insights → Analytics
- Filter by time period (Week / Month / 3 Months)
- Toggle between Income and Expense analytics
- View:
- 🥧 Pie Chart - Category breakdown with percentages
- 📊 Bar Chart - All categories sorted by amount
- 📈 Trend Chart - Daily income vs expense trends
- Go to Insights → Custom Statement
- Select Start Date and End Date
- Click "Generate" to view transactions
- Click "Export PDF" to download a professional report
Backup Options:
- Simple Backup: Go to More → Backup Data (JSON format, human-readable)
- Encrypted Backup: Go to More → Encrypted Backup (AES-256 encrypted, password-protected)
Restore Data:
- Go to More → Restore Data
- Select your backup file (
.jsonor.encrypted) - Enter password (if encrypted)
- Confirm restoration
Export Full Report:
- Go to More → Export PDF for a complete financial report
- Long press (or click and hold) any transaction
- A context menu will appear with options:
- ✏️ Edit - Modify the transaction
- 🗑️ Delete - Remove the transaction
- Cancel - Close the menu
SpendTrail generates professional PDF reports with:
📊 Color-coded Summary Cards
- Green card for total income
- Red card for total expenses
- Blue card for balance
📋 Clean Table Layout
- Column headers (Date, Category, Note, Amount)
- Alternating row backgrounds for readability
- Green text for income, red for expense
- Currency symbols displayed as text codes (e.g., Rs., USD, EUR)
📄 Professional Formatting
- Automatic pagination with page numbers
- Headers repeated on each page
- Branded header with app logo
- International date format support
Note: PDF exports display currency symbols as readable text codes (Rs., USD, EUR, etc.) due to PDF font limitations.
✅ 100% Local Storage - All data stored in your browser's localStorage
✅ No Cloud Sync - Data never leaves your device
✅ No Tracking - Zero analytics, cookies, or trackers
✅ No Registration - No accounts, emails, or personal info required
🔐 AES-256 Encryption - Military-grade encryption for backups
🔑 Your Password Only - Only you know the password
📥 Export Anytime - Download your data in JSON or PDF
🗑️ Delete Anytime - Permanently delete all data
💾 Backup Control - Create backups whenever you want
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the project
- 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
- Write clean, readable code
- Follow existing code style
- Test on multiple browsers
- Update documentation if needed
✨ New Features
- 💱 Multi-Currency Support - Choose from 30 currency symbols worldwide
- 🔍 Search in All Entries - Real-time search by category or note
- 💱 Currency Settings - Easily switch between different currency symbols
📚 Improvements
- Added GitHub support link for issue reporting
- Better PDF readability with currency text codes
🐛 Bug Fixes
- Fixed minor bugs affecting app stability
- Improved overall app performance
- Enhanced error handling and validation
✨ Improvements
- Better stability and reliability
- Optimized resource usage
- Minor UI refinements
🐛 Bug Fixes
- Fixed transaction sorting to prioritize date over timestamp
- Old entries now appear in correct chronological position
- Export PDF now uses proper date-based sorting
✨ Improvements
- Professional PDF exports with colored tables and summary cards
- Custom statement PDFs with period-specific summaries
- Better PDF layout with headers, footers, and page numbers
- Improved date formatting in PDFs (Indian format)
- Added income analytics with charts
- Fixed entry sorting in custom statements
- Added empty state displays in ledger
- Enhanced privacy policy
- Initial public release
- Basic income/expense tracking
- Simple analytics
- PDF export functionality
This project is licensed under the MIT License - see the LICENSE file for details.
What does this mean?
✅ Free to use for personal and commercial projects
✅ Free to modify and distribute
✅ No warranty provided
❌ Author not liable for any damages
Manan Madani
- 🐙 GitHub: @mananmadani
- 🌐 Project: SpendTrail
- 📧 Support: Open an issue
If SpendTrail helped you manage your finances better, please consider:
- ⭐ Starring the repository
- 🐛 Reporting bugs or issues
- 💡 Suggesting new features
- 🔀 Contributing code improvements
- 📢 Sharing with friends and family
- 🐛 Bug Reports: Open an issue
- 💡 Feature Requests: Open an issue
- ❓ Questions: Discussions
Made with ❤️ for better financial tracking




