A complete personal finance PWA — budget, track debt, build wealth. All offline. All private.
Features · Live Demo · Quick Start · Self-Hosting · Architecture · Contributing · License
Most personal finance apps want your data, your subscription, and your patience while they load. SpreadForge wants none of that.
- Zero accounts. No sign-up, no login, no password to forget.
- Zero servers. Your financial data never leaves your device. Ever.
- Zero subscriptions. Download once, use forever.
- Zero build steps. It's one HTML file. Open it in a browser. Done.
10 integrated modules in a single offline-first Progressive Web App:
| Module | What It Does |
|---|---|
| Dashboard | KPI cards for income, expenses, net flow, savings rate, debt, and net worth — with month-over-month trends and Chart.js visualizations |
| Budget Planner | Zero-based budgeting with per-category targets, live progress bars, and variance tracking |
| Transactions | Full CRUD with search, multi-filter (type, category, method, date range), pagination, and running totals |
| Debt Tracker | Snowball vs. avalanche strategy comparison with payoff projections, total interest calculations, and debt-free date estimates |
| Sinking Funds | Goal-based savings with targets, deadlines, monthly contribution calculations, and progress visualization |
| Bills Calendar | Monthly calendar view with due dates, autopay tracking, paid/unpaid status, and category filters |
| Net Worth | Periodic snapshots of assets and liabilities with trend charting over time |
| Reports | Monthly summaries, income vs. expense breakdowns, and category-level analysis with CSV and JSON export |
| Settings | Currency, budget frequency, fiscal year, category editor, theme toggle, data reset, and demo data loader |
| Guided Demo Tour | 14-step interactive walkthrough triggered by ?demo or #demo — auto-loads sample data and walks through every module |
Live on GitHub Pages: hkjeff02.github.io/spreadforge-budget-debt-master
Auto-deployed on every push to main via GitHub Actions.
Append ?demo or #demo to the URL to launch the guided tour:
https://hkjeff02.github.io/spreadforge-budget-debt-master/spreadforge-budget-debt-master.html#demo
The tour auto-skips onboarding, loads sample data, and walks through all 10 modules with floating tooltips, typing animations, and spotlight highlights. Takes about 2 minutes.
# Clone the repo
git clone https://github.com/HKJeff02/spreadforge-budget-debt-master.git
cd spreadforge-budget-debt-master
# Open in your browser — that's it
open spreadforge-budget-debt-master.html # macOS
xdg-open spreadforge-budget-debt-master.html # Linux
start spreadforge-budget-debt-master.html # WindowsNo npm install. No pip install. No Docker. No build step. Just a browser.
SpreadForge is a static site — any web server that serves HTML files will work.
# Python
python3 -m http.server 8000
# Node.js
npx serve . -l 8000
# Then open http://localhost:8000server {
listen 80;
server_name finance.yourdomain.com;
root /var/www/spreadforge;
index spreadforge-budget-debt-master.html;
location / {
try_files $uri $uri/ /spreadforge-budget-debt-master.html;
}
# Cache static assets
location /assets/ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}FROM nginx:alpine
COPY spreadforge-budget-debt-master.html /usr/share/nginx/html/index.html
COPY assets/ /usr/share/nginx/html/assets/
EXPOSE 80docker build -t spreadforge .
docker run -p 8080:80 spreadforge- Fork this repo
- Go to Settings → Pages
- Set source to main branch, root directory
- Your app is live at
https://yourusername.github.io/spreadforge-budget-debt-master/
Drag and drop the repo folder. No configuration needed.
Once served over HTTPS (or localhost), the app can be installed as a standalone PWA:
- Chrome/Edge: Click the install icon in the address bar
- Safari iOS: Share → Add to Home Screen
- Firefox Android: Menu → Install
The service worker (assets/sw.js) caches all resources for full offline functionality.
spreadforge-budget-debt-master/
├── spreadforge-budget-debt-master.html # The entire app (~207KB)
├── assets/
│ ├── manifest.webmanifest # PWA manifest
│ ├── sw.js # Service worker (stale-while-revalidate)
│ └── icons/ # 9 branded PNG icons (72px–512px)
├── docs/ # Screenshots for README
├── CONTRIBUTING.md
├── LICENSE # MIT
└── README.md
| Layer | Technology |
|---|---|
| Markup & Layout | Semantic HTML5, CSS custom properties, responsive grid/flexbox |
| Data | IndexedDB via Dexie.js (loaded from CDN) |
| Charts | Chart.js (loaded from CDN) |
| Typography | Inter (Google Fonts CDN) |
| Offline | Service worker with stale-while-revalidate caching |
| Build | None — zero build step, zero bundler, zero compiler |
All data is stored client-side in IndexedDB. The Dexie.js schema:
| Table | Purpose |
|---|---|
settings |
User preferences (name, currency, theme, budget type) |
budgetCategories |
Income, expense, and savings categories |
monthlyBudgets |
Per-category budget targets by month |
transactions |
Individual income/expense entries |
debts |
Debt accounts with APR, balances, payment info |
sinkingFunds |
Goal-based savings with targets and deadlines |
bills |
Recurring bills with due dates and autopay status |
netWorthSnapshots |
Periodic asset/liability snapshots |
- Single-file architecture. Simplifies distribution, self-hosting, and offline caching. No asset pipeline to break.
- CDN-only external deps. Dexie.js and Chart.js are mature, stable libraries loaded from unpkg/jsdelivr. No npm, no node_modules.
- No server requirement. The app runs entirely in the browser. IndexedDB provides persistent storage. No API calls, no cloud sync.
- CSS custom properties for theming. Light and dark themes are driven by a
data-themeattribute on<html>, toggling CSS variables. No class duplication. - Responsive-first. Desktop sidebar collapses to mobile bottom nav at 768px. All layouts use CSS grid and flexbox.
| Browser | Version | Notes |
|---|---|---|
| Chrome / Edge | 80+ | Full support including PWA install |
| Firefox | 78+ | Full support (no PWA install on desktop) |
| Safari | 14+ | Full support including PWA on iOS |
| Samsung Internet | 13+ | Full support |
Requires IndexedDB, CSS custom properties, and ES2017+ (async/await).
See CONTRIBUTING.md for guidelines. Pull requests welcome.
MIT — free for personal and commercial use.
Built by JTSLabs Ltd.




