A fast, privacy‑friendly personal expense tracker that runs entirely in your browser. Data is stored locally on your device (via IndexedDB using localforage). The app is built with React + Vite and deployed to GitHub Pages.
- Plan monthly budgets and track actuals by subcategory
- Quick monthly navigation and summary tiles
- Local‑only data — no backend, import/export JSON backup
- Mobile and desktop friendly UI
- GitHub Actions CI for build + lint on pull requests
- Installable PWA (offline capable) via
vite-plugin-pwa
- GitHub Pages: https://pruthvi2805.github.io/ExpenseTracker/
- React, React Router, Vite
- Tailwind CSS (v4) for styling
localforagefor IndexedDB storage
- Requirements: Node.js (see
.nvmrcfor version) - Start dev server:
cd pf-dashboard
npm install
npm run dev
- To access from your phone on the same Wi‑Fi, run with host:
npm run dev -- --host
cd pf-dashboard
npm run build
npm run preview -- --host
Vite base is set to /ExpenseTracker/ for GitHub Pages.
- The app ships as a PWA with offline caching.
- On mobile, use “Add to Home Screen” to install.
- Updates auto‑apply after next load (service worker
autoUpdate). - Icons are generated from
public/vite.svgduring build.
pf-dashboard/— Vite app (React).github/workflows/ci.yml— CI: build + lint on PRs.githooks/pre-push— local hook to block pushing tomain
Early prototypes included pages no longer used in the current design. The following files were removed to reduce noise:
src/pages/Plan.jsxsrc/pages/Actuals.jsxsrc/pages/Summary.jsxsrc/pages/Categories.jsxsrc/components/ComboBox.jsx(unused)src/assets/react.svg(unused)
The live app routes are: Dashboard, Budget, Income, Settings, Help.
- Work in feature branches, open PRs to
main - CI “Build & Lint” must pass; branch protection blocks direct pushes
- Squash merge for a tidy history
# from repo root
git config core.hooksPath .githooks
- All data stays in your browser (IndexedDB)
- Use Settings → Backup to Export/Import JSON
From pf-dashboard/:
npm run dev— Vite dev servernpm run build— production buildnpm run preview— serve the built bundle locallynpm run lint— ESLint
- Use conventional commit messages (e.g.,
feat:,fix:,chore:) - Keep PRs small and focused; include screenshots for UI changes
MIT — see LICENSE for details.