
ProjectsLedger
Ledger
Production
Stack
- Next.js
- React
- TypeScript
- Tailwind
- Zod
- TanStack Form
- TanStack Query
- TanStack Pacer
- TanStack Table
- TanStack Charts
- Postgres
- Motion
What it is
A monthly money product on its own host: overview, transactions, budgets, pots, and bills. Sign in and create account sit on that same host.
Why it exists
Challenge screens are not the same as keeping that person’s records. The loop needed its own store.
How it works
Production persists one person’s changes in a dedicated Postgres database. Seeded first-use data later belongs only to that account. History holds signup, sign in, and the five monthly pages.
Case studies
- Keeping a monthly money loop on its own database
- The monthly loop starts on one overview
- Search and sort the month without leaving the loop
- Category budgets stay on the same store as the spend
- Savings goals add and withdraw without going negative
- Repeating bills are derived from the same transactions
- The monthly loop sits behind its own login
- A first-use account starts with the challenge data
History
Showing still 1 of 2Overview
One screen has to hold cash, pots, budgets, and bills without sending the person hunting.
- Added Current balance, income, expense, pot, budget, recent transaction, and bill totals on one overview.
Showing still 1 of 2Transactions
The month has to be searchable and sortable without leaving the loop.
- Added Search, category filter, sort, and paginated history on the same store.
Showing still 1 of 5Budgets
Category budgets have to live on the same store as the spend they cap.
- Added Create, edit, and delete a category budget with monthly spend and remaining amount.
Showing still 1 of 4Pots
Savings goals have to add and withdraw without going negative.
- Added Create, edit, and delete pots, then add money or withdraw without a negative balance.
Showing still 1 of 2Recurring bills
Repeating obligations have to be derived from the same transactions, not a second list.
- Added Deduplicated monthly bills with paid, upcoming, and due-soon status from recurring transactions.
Showing still 1 of 3Sign in
The monthly loop sits behind its own login. It does not share Playport or gallery sessions.
- Added Email and password sign in on Ledger’s own host.
Showing still 1 of 3Create account
First use has to start with the challenge data, then belong only to that account.
- Added Registration that seeds an isolated copy of the fictional starter dataset.