SuperWallet is a personal finance app for iOS and Android that brings all your money into one place. 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 a category, add tags, write notes, and attach files. The filtering system lets you slice through your history by date range, type, category, wallet, tag, or amount — with active filters shown as dismissible chips so it's always clear what you're looking at. Multi-currency support spans 11+ currencies with daily exchange rate updates, so international spending is tracked accurately without manual conversion.
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. Recurring transactions automate regular entries so routine expenses and income never need to be entered twice. SuperBoxes let you group transactions by any context — a trip, a project, a shared expense — with custom fields and their own budget tracking, giving you a flexible layer of organization on top of your main wallet structure.
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?" or "Am I on budget for entertainment?" and get answers pulled directly from your data. A weekly digest summarizes where your money went and flags anything worth paying attention to.
Main responsibilities
- Architected the project as a TypeScript monorepo using pnpm workspaces and Turbo, with separate packages for the React Native app (Expo), a Next.js landing page, Firebase Cloud Functions backend, and a shared types package as the single source of truth for all entities.
- Built the mobile navigation with Expo Router v6 file-based routing, separating public routes (sign-in, sign-up, password reset) from authenticated ones, with a bottom-tab layout covering the dashboard, transactions, budgets, and a "More" section for wallets, categories, tags, recurring transactions, and SuperBoxes.
- Managed global state with Zustand, using persisted stores for user settings (currency, language, theme) and profile, and a separate in-memory store for transaction filter state.
- Designed the transaction filtering system with seven independent dimensions (full-text search, date range, type, category, wallet, tags, amount range), implemented as client-side hooks with a bottom-sheet UI, active filter chips, and a toolbar badge showing the active filter count.
- Integrated Dinero.js for precise multi-currency arithmetic and built a scheduled Firebase Cloud Function that fetches and stores daily exchange rates, enabling automatic conversion across all 11+ supported currencies.
- 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, and a custom App Check device-approval flow for enhanced security.
- Added Sentry error tracking across both the mobile app and Cloud Functions, Zod validation for all user inputs, and typesafe-i18n for type-safe translations in English, Italian, and Portuguese.
- Built an AI assistant feature using mastra.ai and the Claude API, with a dedicated
packages/agentsservice deployed separately from the Firebase backend. Agents use tool-calling to read and write Firestore data scoped to the authenticated user, with a Firebase Cloud Function acting as a secure gateway that verifies Auth tokens before proxying requests to the agents service. Covers natural language transaction entry, financial Q&A, and scheduled weekly summaries. - Used Claude Code as an AI development assistant throughout the project to accelerate implementation, review architecture decisions, and maintain code quality across the monorepo.
