Finance Planner is a self-hosted web app for planning savings toward upcoming payments. Record your income and your bills, goals and recurring payments, and it tells you how much to set aside each month per goal to hit its date — and what's left over, per account, per person, and across a household.
The core idea is that the unit of planning is the person, not the account. A bills pot fed by a current account can't be planned on its own, so one funding pass covers everything you own, and every screen — account page, household plan, flow diagram, forecast — is a view of that single pass. Income is money arriving from outside; a transfer between two of your own accounts is just your own money moving, and the two are never double-counted. Expenses are always funded before savings, funding loops are detected and reported rather than refused, and goals can be paced by a target date or driven by a fixed monthly contribution.
Households are an attribution layer over the same engine: tag accounts as shared or personal, set each member's contribution share, mark expenses shared or personal, and the app splits shared costs, funds everything by priority and works out the transfers each person should make. The plan is grounded in reality by a contributions ledger — record what you actually set aside, check in real balances, tick off transfers and close your month — and from that history it projects twelve months forward.
I built the whole thing: domain engine, multi-service backend, React PWA, and deployment. It's a pnpm/Turborepo monorepo with a pure TypeScript domain package (the savings engine, pinned to the penny by parity tests across every view), Fastify services for API, auth and calculation, Postgres via Drizzle, Zod contracts shared end to end, OpenTelemetry tracing across the service hops, and cloud-agnostic Kubernetes deployment via Helm. Most of the implementation was orchestrated across parallel AI agents from plan documents I wrote, with CI gating every wave.