← Back to Home

ExpenseMate

SwiftSwiftUIPythonGemini APIOpenAI APIImage ProcessingOCRFastAPIGoogle Cloud RunGoogle Cloud SQLFirebase AuthenticationFirebase Cloud MessagingDockerRESTful APIsPush NotificationsReceipt ScanningReal-time Data SyncCloud InfrastructureCI/CDTypeScriptNext.jsTailwind CSS

ExpenseMate is a comprehensive bill-splitting application designed to simplify the way people share and track expenses. The idea behind this app comes from personal experience with the complexities of group expenses. It aims to make financial management in groups straightforward and efficient.

The app's standout feature is its intelligent receipt scanning capability, which automatically extracts expense details and categorizes them. This, combined with real-time expense tracking and group management, makes ExpenseMate a great tool for anyone who frequently shares expenses with others.

I built ExpenseMate with as a native iOS app using Swift and SwiftUI, focusing on creating a clean and intuitive interface. For the backend, we use FastAPI hosted on Google Cloud Run for scalability and reliability, with data stored securely in Google Cloud SQL. Firebase handles our authentication while push notifications are managed through our own Cloud Run service that communicates with Apple's APNs.

Currently available on iOS, with Android support planned for the near future, ExpenseMate represents my commitment to creating practical, user-friendly solutions to everyday problems.

System Architecture

Project content

ExpenseMate follows a modern service-oriented architecture with five main components:

  1. iOS App: Built with Swift and SwiftUI. It serves as the primary user interface, handling receipt scans, expense tracking, and group management. It communicates with Firebase for authentication, the Backend API for data operations, and receives push notifications via APNs.

  2. Backend API: Developed with FastAPI and deployed on Google Cloud Run. It manages all business logic, receipt processing, data validation, and API requests from the iOS app. It validates Firebase tokens, sends push notifications via APNs, and interacts securely with the database.

  3. Database: A PostgreSQL instance hosted on Google Cloud SQL. It stores all core application data including users, groups, expenses, receipts, and device tokens. It is only accessed by the Backend.

  4. Firebase: Used for authentication and cloud messaging. It issues tokens to the iOS app, which the Backend validates. It also manages sessions and push notification tokens.

  5. Marketing Website: A standalone Next.js application hosted on Vercel. It serves marketing content, links to the App Store, and hosts documentation. It has no direct interaction with the other systems.

Key Features

Smart Bill Splitting: Automatically calculate each person's share based on custom rules and percentages.

Receipt Scanning: Snap a photo and let ExpenseMate extract items and calculate splits automatically.

Group Management: Create and organize multiple groups for different events or living situations.

Expense Tracking: Monitor all expenses and settlements with a clear transaction history.

Real-time Updates: Receive instant notifications when expenses are added or bills are settled.

Debt Settlement: Streamline repayments with automated calculations and payment tracking.

Future Roadmap

• Version 1.1 (Q2 2025): One‑tap sign‑in (Google & Apple), German/French, improved onboarding and UI/UX.

• Android App v1.0 (Q3 2025): Full Android launch with iOS feature parity.

• Version 1.2 (Sep 2025): Spanish & Portuguese, improved group creation/sharing, expense categories (iOS early Sep; Android late Sep).

• Version 1.3 (Q4 2025): Offline mode, Excel import, PDF/CSV reports, automatic currency conversion.

• ExpenseMate Web (Q4 2025): Desktop‑optimized web app with dashboards.

• Personal Space (Q1 2026): Personal expense tracking, quick scan, unified view, Excel import.

• Work Space (Q3 2026): Business‑trip tracker, company‑card vs personal toggle, one‑click reports; integrated with Personal Space.

Motivation & Vision

ExpenseMate is built to be the one home for all your spending—trips with friends, personal budgeting, and work reimbursements. It captures, organizes, and reconciles all your spending in one place.

Our vision is a clear, actionable overview: see what your job owes you, what others owe you, what you owe, and what you truly spend. Generate personalized reports for work and personal use in seconds.

Looking ahead to 2026, we aim to add Investment Portfolios so you can represent 100% of your personal finances in one dashboard for expenses, reimbursements, and investments with full transparency.

Behind the app: I'm Tun, building ExpenseMate, the expense-tracker I've always wanted. While I am still growing as a developer and entrepreneur, I am on a mission to make money management simple, complete, and trustworthy.

Tun Keltesch - Portfolio