Inspiration
"Where is the money actually going?" is a question nearly every Indian household asks sooner or later — and almost no finance app actually answers, because they're all built for someone else's life. A bank account, maybe a credit card. Not gold sitting in a locker. Not a fixed deposit maturing next spring. Not cash a parent tracks separately from everyone else's UPI. Not a family's shared budget, split four ways.
I built WIMM because I didn't want to force Indian household finance into a template that was never designed to hold it. And because the people who need financial clarity most are usually the ones least able to pay a subscription to get it.
"Free" wasn't a pricing decision here. It was the whole point.
What it does
WIMM — Where Is My Money? — puts a household's entire financial life in one place, tracked the way people actually live it:
- 💰 Everyday money — expenses and income, multiple payment methods, a dedicated cash wallet for money that never touches a bank app
- 📊 Planning ahead — budgets that warn you before you overspend, goals, a financial health score, investment tracking with maturity dates
- 🪙 Assets most apps forget — gold and gemstones by weight and value, vehicles, a trip journal with its own travel fund
- 👨👩👧 Family, together — tag any transaction to a family member so shared expenses stay honest instead of blurry
- 🧾 Reports & compliance — compare any two periods instantly, export clean PDFs, file under India's New Tax Regime
And the majority of all of that is free. No trial clock quietly ticking down in the background.
Feature & functionality description
Where Is My Money (WIMM) is a comprehensive personal finance app built for how people in India actually manage money — across banks, cash, gold, family, and more.
Core money tracking
- Expense and income logging with categories, sub-categories, quantities, and itemized breakdowns
- Multiple payment methods per transaction, including split payments across methods
- A dedicated cash wallet that tracks ATM withdrawals and cash spending separately from digital balances
- Live budget warnings while entering an expense, before the money is spent
Planning & growth
- Monthly budgets with allocation-vs-income breakdowns by category
- Investment tracking for fixed deposits, provident fund accounts, and insurance, with returns and maturity dates
- Financial goals with progress tracking
- A financial health score that summarizes overall standing at a glance
Assets most finance apps ignore
- Gold and gemstone holdings, tracked by weight and cost with an estimated current value
- Vehicle tracking
- A trip journal with its own travel fund and true per-trip cost
Family & sharing
- Family member tagging on transactions, so shared household expenses stay attributed correctly
- Shared visibility into family finances
Reporting & compliance
- Detailed reports comparing any two time periods, by category and by payment method, with trend charts for savings, net worth, and account balances
- Income tax support for India's New Tax Regime
- PDF report export, including a premium LaTeX-based export for polished statements
Everyday utility
- Subscription tracking with renewal dates and overdue flags
- Debt and credit tracking
WIMM is freemium with a free-by-design philosophy: the large majority of features are free to use, with Premium unlocking cloud sync, PDF reports, and file attachments.
How we built it
Under the hood, WIMM is built architecture-first. Every piece has a lane: MVVM on the UI side, a clean repository pattern underneath it, and Riverpod running state end-to-end with full code generation. Data models are immutable — generated with Freezed — so data only ever flows one direction: from the data layer up to the screen, never backward from a stray widget.
Locally, everything lives inside a Drift-backed SQLite database, encrypted with SQLCipher — because financial data deserves real protection, not just a login screen. Where the cloud genuinely helps — sync, backup — a self-hosted Supabase instance does the work. Navigation runs on GoRouter, billing runs on RevenueCat, and the whole thing ships through Codemagic.
None of that is what users actually feel, though. What they feel is Nunito from Google Fonts instead of a cold system font, Material Symbols instead of clip-art icons, and fl_chart quietly turning a wall of numbers into something legible at a glance — dual donuts for period comparisons, trend lines for net worth, budget-vs-actual that flags red before it becomes a problem.
Challenges we ran into
The scariest bug wasn't a crash — it was an architecture decision that looked fine for months and then wasn't. WIMM's scope is wide — expenses, investments, gold, vehicles, trips, tax, family sharing — and wide scope punishes sloppy boundaries. A large file-splitting pass taught me, the hard way, that Riverpod's protected members — setState, ref, state — simply can't be reached from extension methods or sibling mixins. Several "clean" splits had to be stitched back together once that constraint bit.
Then there was the dual-donut chart that refused to stop clipping — a small-looking bug that took real, patient iteration to actually fix rather than just visually hide.
And the challenge nobody warns a solo developer about: building something good isn't the same as being found. WIMM was live, working, and still invisible in Play Store search for weeks — which meant stepping away from features entirely to chase down store-listing optimization instead.
Accomplishments that we're proud of
Keeping the free-by-design promise actually free — not a crippled trial dressed up as generosity — while still shipping genuinely deep features: tax-regime support, gold tracking, a real financial health score, not a shallow MVP wearing a finance-app costume.
Holding a clean MVVM + repository architecture with strict one-direction data flow across all of that scope, solo, without it collapsing into spaghetti.
And the numbers, small as they still are, have the right shape: a 32% store-listing click-through rate and a 28% conversion rate, with zero marketing spend behind either one — a sign that something real is resonating with the people who do find it.
What we learned
That architecture debt left unpaid gets expensive, not cheap, later — the Riverpod lesson now shapes how I design state access before writing a feature, not after cleaning up the mess. That visibility is a problem separate from building — a genuinely useful app can sit unseen on a store shelf without deliberate work to be found. And that "free" is a design constraint, not just a pricing page — it decides which features get built first and which stay simple, because the product has to earn its keep without a paywall doing the convincing.
What's next for Where is My Money?
Growing the user base organically through continued store-listing refinement. Finishing in-flight work like Wiredash-based beta feedback and ongoing Sentry crash triage. And further out: more modularization of the codebase's largest remaining files, a possible student pricing tier, and scaling the Supabase backend as usage grows past what today's setup comfortably holds.
Built With
- amplitude
- codemagic
- dart
- deno
- drift
- edge-functions
- firebase
- fl-chart
- flutter
- freezed
- google-fonts
- google-play-billing
- gorouter
- material-design
- material-symbols
- onesignal
- postgresql
- revenuecat
- riverpod
- sentry
- sqlcipher
- sqlite
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.