Back to projects

Walletmate - AI Personal Finance App

Walletmate is a personal finance app that turns receipt photos and everyday language into structured transactions, with spending analytics and an offline-capable web interface.

What I Built

  • A Next.js progressive web app for tracking expenses and income
  • A FastAPI backend that uses OpenAI to parse text and receipt images
  • A transaction confirmation flow for reviewing the amount, category, description, and date before saving
  • Analytics for cash flow, spending categories, spending pace, and recurring costs
  • Vietnamese and English localization, dark and light themes, and offline mutation queuing

Smart Transaction Input

Enter a purchase in natural language or upload a receipt, then review the parsed transaction before approving it. This reduces manual entry while keeping the user in control of what gets saved.

Walletmate natural-language input and transaction confirmation form

Spending Analytics

The analytics view brings together cash flow trends, category breakdowns, spending pace, and fixed costs relative to income. Advice cards highlight potential savings and recurring expenses.

Walletmate cash flow, spending categories, recurring costs, and savings advice

Architecture and Deployment

The Next.js frontend handles the PWA experience, authentication, and transaction interface. The Python FastAPI service handles AI parsing, with PostgreSQL storage and Drizzle ORM on the frontend side. Docker Compose provides a local deployment for the frontend, API, and database; the repository also includes Vercel deployment configuration.

Walletmate deployment overview

Technology Stack

  • Frontend: Next.js, React, TypeScript, Tailwind CSS, TanStack Query
  • Backend: Python, FastAPI, OpenAI, Pydantic
  • Storage and authentication: PostgreSQL, Drizzle ORM, NextAuth
  • Offline support: Serwist and queued mutations
  • Deployment: Docker Compose, Vercel, GitHub Actions

Repository