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.

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.

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.

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