Paris 2025
EUR 1,200
Tokyo trip
JPY 150,000
Beach weekend
USD 450
Road trip
GBP 800

Your trips. Your budget.
Your rules.

A self-hostable, offline-first holiday budget tracker that respects your privacy.

42 trip dashboard showing budget gauge, spending stats, and category breakdown

Everything you need,
nothing you don't

Multi-Currency

Track expenses in any currency. Set exchange rates per trip and see everything converted to your home currency.

Offline-First

Works without internet. PWA with CRDT-based sync means your expenses are always available, even mid-flight.

Self-Hostable

One Docker command. Your data stays on your server. No cloud, no tracking, no nonsense.

Live Dashboard

Real-time analytics with budget gauge, category breakdown, daily spending timeline, and projected totals.

Smart Categories

Six built-in categories: food, accommodation, transport, activities, shopping, and misc. Quick one-tap expense entry.

Budget Tracking

Set a budget per trip. See at a glance if you're on track, with average per day and per person breakdowns.

Multi-User

Share one instance with travel companions or family. Admin manages accounts, each user tracks their own trips.

Quick Entry

Add expenses in seconds. Large amount input, one-tap categories, auto-filled dates. Designed for on-the-go use.

Open Source

MIT licensed. Fork it, customize it, contribute back. Built with SvelteKit, SQLite, and Drizzle ORM.

See it in action

Desktop

Trip list showing Paris, Tokyo, and Portugal trips with budgets
Trip list
Trip dashboard with budget gauge, stats grid, and category breakdown
Trip dashboard
Expense list grouped by date with daily totals
Expense list

Mobile

Mobile trip list view
Trips
Mobile dashboard with budget and categories
Dashboard
Mobile expense list
Expenses

Deploy in seconds

One file. One command. Done.

docker-compose.yml
services:
  42:
    image: ghcr.io/bretzel-app/42:latest
    ports:
      - "3000:3000"
    volumes:
      - 42_data:/data

volumes:
  42_data:

That's it.

Open localhost:3000, set a password, and start tracking.