Rupi, and the case for designing from a blank file
An indie family expense tracker, built solo end-to-end. The kind of work I do to stay sharp on the parts of the craft that production design systems quietly take away from you.
“Production design system work is most of what I do, and it is good work. But it is also work where 80% of the visual decisions have already been made for you. The indie practice is where I keep the muscles for the other 20%.”
What you lose when you only design inside a system
When you design inside a mature design system every day, the system does an enormous amount of thinking on your behalf. Type scale, colour, spacing, component vocabulary — all decided. That is the system working as intended, and it is the right tradeoff for shipping enterprise software at scale.
It also means that if the system is the only place you design, you slowly forget how to make those decisions yourself. The indie work is my deliberate counterweight. A blank file. No tokens. No component library. Every decision has to be made and defended fresh.
Rupi — a family expense tracker that does one thing
Rupi is a shared ledger for households. Two or more people, one running record of money in and out, no analytics, no insights, no nudges. It is built in React Native with Expo, and the build spec was developed against Replit Agent — partly to keep velocity up, partly to test how indie tooling has changed for solo designer-builders.
The design constraint that shaped most of it: every feature has to survive a 'does this respect the user's attention' test. That removed a lot of obvious additions — push notifications, gamification, monthly summaries — and what was left turned out to be enough.
It is surprisingly hard to design a product that does not try to grow. The pull towards 'one more feature' is structural. Resisting it is its own discipline.
A small set of community tools
Rupi sits inside a wider personal portfolio of small mobile work, mostly community and faith-oriented — a Sunday school lesson companion, a small-group prayer log, an examen practice journal. These are at earlier prototype stages. They are not pitching anyone. They exist because I am part of the communities they serve, and because solo design problems are the ones where my most original interaction work tends to come out.
A senior product designer is the sum of the products they ship and the products they build for themselves. The indie work is the second half of that equation. It is also the work that keeps me honest about what software is for, and that perspective is, increasingly, the thing I bring to enterprise AI design conversations that the rest of the team does not.