Split event expenses fairly with friends — no login, real-time, offline-first.
- Create an event in seconds — no signup, no email.
- Share the URL with friends. They identify themselves on first visit; one click to "I'm new" or pick from the list.
- Add purchases with per-person consumption multipliers. The app calculates the total to buy.
- Add expenses. The app computes who owes whom and shows the shortest settlement plan.
- Works offline for reading. Syncs live across devices when online.
- Install it as a PWA on your phone or laptop.
- Three languages: English, Spanish, Basque.
- Open EventSplit on any device.
- Tap Create event, name it, and add your name.
- Share the URL.
Open the URL in Chrome, Edge or Safari and use "Add to Home Screen" (mobile) or "Install" (desktop). Behaves like a native app and works offline by design.
No login. Your name (and optional nickname) live in your browser's localStorage. Event data syncs through Supabase (Europe-hosted, encrypted in transit). Anyone with the event URL can read and edit it — keep the link private to your group. No analytics, no tracking, no cookies (except your language preference).
Open-source, MIT licensed. PRs welcome.
Stack — TypeScript (strict), React 18, Vite, Tailwind CSS, Supabase (Postgres + Realtime), vite-plugin-pwa, i18next, Vitest.
Architecture — Hexagonal (domain → application → infrastructure → presentation). DI via a small hand-rolled container. Tests use in-memory fakes — no DB mocks.
Local dev
git clone git@github.com:Endika/EventSplit.git
cd EventSplit
cp .env.example .env.local # fill VITE_SUPABASE_URL + VITE_SUPABASE_ANON_KEY
npm install
npm run devCI runs lint, typecheck, tests and the production build on every PR.