Full-Stack ProductStatus: PrototypeYear: 2026
Vasoli
Payday-aware budgeting: one honest number for what is safe to spend before salary day.
- Go
- Connect RPC
- PostgreSQL
A look inside
4 screens from the real build. Select any to see it full size.
Overview
A personal-finance app for salaried people in India that answers one question: how much can I still spend before payday?
Budget apps show where money went. Salaried people mostly need to know what is safe to spend before the next payday, after bills, savings goals and a safety reserve.
What I built
Built the product: the Next.js app, the Go backend and its PostgreSQL schema, and the payday forecast.
What it does
- Spending room until payday
- CSV statement import with review
- Recurring bills and goals
- Receipt vault
System and architecture
Vasoli combines recorded balances, recurring bills, goals and a payday plan into one spending-room estimate, imports bank statements through a server-checked preview, and says which inputs could change the number.
A Next.js 14 frontend talks to a Go backend over Connect RPC. The backend uses sqlc for typed queries against PostgreSQL on Supabase, verifies Supabase JWTs, and computes the payday forecast in integer paise so rounding never drifts. An optional Gemini assistant, Marco, answers questions about your own data.
- Interface
- API & services
- Retrieval & data
- AI & models
- Payday forecast computed in integer paise on the server
- Bank-statement import with balance checks and duplicate detection
- Bills linked to the accounts that pay them
Technology
Themes
Challenges and trade-offs
- Giving one number without hiding its assumptions.
- Importing messy bank statements without double-counting manual entries.
Outcome
Go · Connect RPC · PostgreSQL · Integer-paise forecasting
- Running as an invite-only private pilot.
- Statement imports check opening and closing balances before anything is saved.
Learnings
- Money math belongs in integers on the server, not floats in the browser.
- A forecast earns trust when it says what it doesn't know.
See it for yourself.
Links open in a new tab.