Fintech · FounderRM30172

SuperWallet

SuperWallet is an all-in-one personal finance app for iOS, Android and the web. Track multiple wallets, record expenses and income in multiple currencies with daily exchange rates, plan with zero-based budgets and lightweight Goals, split spending across categories, people and SuperBoxes, settle reimbursements, automate recurring entries, and talk to your money through a built-in AI assistant.

SuperWallet is a personal finance app that brings all your money into one place, on iOS, Android and a companion desktop web app. You can create multiple wallets — one per bank account, cash, or card — and record every expense, income, or transfer between them. Balances update in real time so you always see exactly where you stand.

Transactions are fully customizable: assign one or more categories, split a single amount across them, add tags, attach the people involved, write notes, and attach files. The filtering system lets you slice through your history by date range, type, category, wallet, tag, person, or amount — with active filters shown as dismissible chips so it's always clear what you're looking at. Multi-currency support runs off a server-side currency registry with daily exchange rate updates, and you can request a currency that isn't enabled yet.

Planning happens at two levels. Budgets follow a zero-based approach where you plan where every dollar goes before the month starts, with per-category progress tracking and alerts when you're close to a limit — or, with income planning switched off, as a plain spending cap. Goals are the lightweight counterpart: a standalone "how much so far" tracker scoped to a single category, wallet, person, or an entire SuperBox, with an optional save-up, pay-down, or cap target. Recurring transactions automate regular entries through a confirmation step, so nothing lands in your history without you seeing it.

Around that sit the organizational layers. SuperBoxes group transactions by any context — a trip, a project, a shared expense — with custom fields, attachable Goals, and their own tracking. People let you tag transactions with the real humans involved (family, flatmates, friends) without them needing accounts, answering "how much did I spend on Marco this month". Reimbursements track money still to be settled in either direction, deriving the outstanding residual from real offsetting transactions rather than storing a mutable balance.

A built-in AI assistant lets you interact with your finances in plain language. Say "I spent €30 on lunch yesterday" and it parses the transaction, matches it to your real categories and wallets, and asks for confirmation before saving. You can also ask questions like "How much did I spend on food this month?" and get answers pulled directly from your data.

Main responsibilities

  • Architected the project as a TypeScript monorepo using pnpm workspaces and Turbo, spanning four surfaces — an Expo React Native app, a Next.js 16 landing page, a Next.js 16 desktop web app, and Firebase Cloud Functions — plus a shared types package acting as the single source of truth for every entity.
  • Built the mobile app on Expo 56 / React Native 0.85 with Expo Router v56 file-based routing and native tabs, separating public routes (sign-in, sign-up, password reset) from authenticated ones, and styled it with Tailwind CSS v4 through uniwind for one styling language across mobile and web.
  • Organized the app as vertical feature slices — transactions, budgets, goals, boxes, people, reimbursements, recurring, wallets, categories, auth, profile, assistant — each owning its components, hooks, services, types and validators behind a single public entry point.
  • Designed the transaction data model around a "budgeting envelope" that keeps the cash record (amount, date, wallets, type) separate from personal-management dimensions (category splits, tags, people, boxes, accrual windows), so the movement stays clean enough to reconcile against a future open-banking feed.
  • Implemented category splits and accrual periods, letting one transaction divide across several categories and spread its weight across budget periods rather than landing entirely in the month it was paid.
  • Built the Goals feature end to end as a standalone entity with single-kind scopes (categories, wallets, people, or one SuperBox), optional targets with save-up/pay-down/cap framing, and shared progress computation across all three.
  • Built the Reimbursements feature on a parent/child transaction model, where an offsetting movement of the opposite type points back at the reimbursable one and the residual is always derived, with mutual exclusivity enforced in both the UI and the Firestore security rules.
  • Managed global state with Zustand across ~20 stores, combining persisted stores (settings, profile, currency) with in-memory handoff stores that pass configuration and confirm callbacks into sub-editor modals.
  • Implemented the Firebase backend with domain-driven Cloud Functions covering auth triggers, wallet and category lifecycle events, atomic balance updates via Firestore batch writes, event deduplication to prevent double-counting, a scheduled daily exchange-rate refresh, and a currency registry with a user-request path.
  • Wrote an emulator-backed Firestore security rules test suite as its own workspace package, so access rules are verified as code rather than by inspection.
  • Built the AI assistant using Mastra and the Claude API in a standalone packages/agents service deployed separately from Firebase. The agent's instructions split into a cached static prefix plus a per-user block injecting the real wallets and categories up front, keeping the happy path to a single LLM call; a Firebase Cloud Function gateway verifies the caller's Auth token before proxying, and Mastra's Firebase auth scopes memory and tools to that uid.
  • Added Sentry error tracking across mobile and Cloud Functions, Zod validation on all user input, App Check device attestation, and typesafe-i18n for type-safe translations in English, Italian, and Portuguese.
  • Used Claude Code as an AI development assistant throughout, accelerating implementation, reviewing architecture decisions, and maintaining consistency across the monorepo.