Split bills and track shared expenses with friends. Kvitt makes it easy to see who owes what and settle up.
- Split any expense your way — equally, by exact amounts, or by percentage
- Balances that stay current — update the moment an expense or settlement is added
- See where the money goes — spending broken down by category and month
- Any currency, converted automatically at today's rate
- Create groups and invite members via link
- Record settlements to clear debts
- Expense history with filtering and infinite scroll
- English and Swedish, with more locales easy to add
- Light/dark mode
- Framework: Next.js 16 (App Router)
- Database: Neon Postgres
- Auth: Neon Auth
- UI: shadcn/ui + Tailwind CSS
- i18n: next-intl (English, Swedish)
- Animation: Framer Motion
- Charts: Recharts
- Testing: Vitest
- Deployment: Vercel
Prerequisites: Node.js 22.13+ (see .tool-versions; asdf install picks it up automatically), a Neon database
- Clone the repo and install dependencies:
npm install- Copy the environment variables and fill them in:
cp .env.example .env.local| Variable | Description |
|---|---|
DATABASE_URL |
Neon connection string |
NEON_AUTH_BASE_URL |
Neon Auth base URL |
NEXT_PUBLIC_BASE_URL |
Public URL (e.g. http://localhost:3000) |
- Set up the database:
psql $DATABASE_URL -f schema.sql- (Optional) Seed with sample data:
psql $DATABASE_URL -f seeds.sql- Start the dev server:
npm run devOpen http://localhost:3000.
npm test # run once
npm run test:watch # watch mode