Shared expense tracking app with support for multiple personal and shared sheets.
Main data table | Add transaction dialog |
---|---|
The primary motivation for building this app was to consolidate my expense tracking across different apps for personal and shared expenses. I was using a simple iOS app to enter my personal expenses, while also manually copying over expenses from shared expense tracking apps/web apps.
This app gives you a unified view of how much you spent, regardless of whether you spent it directly or somebody paid on your behalf.
It's also designed to not be linked directly to bank or debit/credit card transactions, as that required a lot of manual fixing up of categories or descriptions, in my experience.
- Installable mobile app with offline capability (PWA)
- Themes and light/dark/system mode
- Push Notifications for shared transactions
- Multi currency support with automatic conversion (ECB data)
- Split transactions evenly, or by participants, shares, percentages, or exact amounts
- Schedule personal transactions on a monthly or weekly schedule
- Settle up with automatically calculated amounts
- Expense import (CSV) and export (CSV/JSON)
- React, Vite, Tailwind CSS, Radix/shadcn, Framer Motion
- tRPC, React Query
- Hono, BullMQ, Prisma, Postgres, Redis
- Playwright, Vitest
- Prettier, ESLint
If using GitHub Codespaces or a Dev Container, skip to step 5.
-
Configure local environment variables
yarn be prepare:local
-
Start dev services
docker compose -f compose.local.yml up
-
Migrate databases
yarn be prisma migrate dev
-
Start dev servers
yarn dev
-
Optional: Generate demo data
Dev server must be running
yarn be prepare:demo
Login with
user@example.com
andpassword1234
(seepackages/backend/bin/demo.ts
for more details)
Docker build args:
- GIT_COMMIT_SHA
- VITE_GIT_COMMIT_SHA
- VITE_ENV_NAME
- VITE_SENTRY_DSN
- SENTRY_AUTH_TOKEN
- SENTRY_ORG
- SENTRY_PROJECT