FinPlan
A public, local-first personal finance toolkit with client-side planners, a tested finance engine, bilingual UI, and portable browser-local state.
The idea
FinPlan is a collection of personal-finance tools that runs entirely in the browser. There are no accounts and no application server holding the user’s finance data; each planner keeps its state locally and can export or import JSON when portability matters.
The interface is bilingual from the same next-intl message layer, with English and Thai supported
throughout the shared shell and individual tools.
Representative capabilities
The project now covers a broad set of everyday planning problems rather than a single calculator. Representative tools include:
- debt payoff strategy and amortization planning;
- yearly budgets, cash-flow planning, subscriptions, and goal timelines;
- retirement, loan, tax, and readiness planning;
- credit-card and travel-card comparison;
- investment strategy and portfolio-allocation analysis; and
- CSV-first statement import with rules-based transaction categorization.
Those examples are intentionally not a completion counter. The current roadmap and implementation
state live with the source in MASTER-PLAN.md.
Engineering shape
- Finance math stays out of components. Amortization, payoff simulation, growth, rates, tax,
portfolio analysis, and other numeric logic live as pure functions under
src/lib/financewith targeted Vitest coverage, including edge cases and regression cases. - Local-first persistence is explicit. Zustand stores persist tool state in browser storage; JSON import/export and demo data make states easy to reproduce without adding an account system.
- Static deployment is a constraint, not an afterthought. The app is built as a static export for GitHub Pages, so routes are prerenderable and finance logic remains client-side.
- The public repository is the current project state. Specs, roadmap, tests, screenshots, and implementation history are visible with the code instead of being duplicated as fragile numbers here.
Source
FinPlan is public: github.com/TanaboonJew/finplan.