Summary
- Built with Next.js 16, React 19, and TypeScript with installable PWA support including service worker and manifest.
- Integrates Google Gemini API to extract itemized expenses from receipt photos, with automatic translation to Simplified Chinese.
- Supports both standard even-split and detailed per-item splitting modes across multiple participants.
- Uses Neon’s serverless Postgres driver with an optimized schema design that calculates balances from a single indexed query on unpaid records.
- Web Push API integration with scheduled cron reminders to notify users of outstanding balances.
- Responsive UI built with Tailwind CSS v4, featuring real-time balance dashboards, payment modals, and confirmation dialogs.
Roommate Bookkeeping is a full-stack Progressive Web App built with Next.js, React, and TypeScript that simplifies shared expense tracking among my roommates. The application allows users to log expenses, split costs among participants, track who owes whom, and settle debts. The app has a clean, mobile-first interface, features AI-powered receipt scanning using Google’s Gemini API to automatically extract line items from photo of receipts, and supports push notifications to remind roommates of outstanding balances.




The stoarge is powered by a serverless PostgreSQL database (Neon) with a carefully designed schema that consolidates expense splits and payments into a single user_records table, enabling efficient balance calculations with indexed queries on only unpaid rows. The app is installable as a PWA with offline support via a service worker, and is secured with passcode-based authentication. The project demonstrates practical full-stack architecture including RESTful API routes, real-time data fetching, and a responsive Tailwind CSS interface.
