Skip to content

Endika/EventSplit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

359 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EventSplit

Split event expenses fairly with friends — no login, real-time, offline-first.

Try it now →

Latest release CI Last commit Conventional Commits License: MIT

What you can do

  • 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.

How to start

  1. Open EventSplit on any device.
  2. Tap Create event, name it, and add your name.
  3. Share the URL.

Install on your device

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.

Privacy

No login. Your name (and optional nickname) live in your browser's localStorage. Event data syncs through Supabase (Europe-hosted, encrypted in transit). No analytics, no tracking, no advertising cookies (only your language preference).

Access — all database access goes through SECURITY DEFINER RPCs; the table is not directly readable, so the public key can't bulk-read events. An event is reachable only by its exact id (keep the link private to your group). An optional edit PIN, when set, is enforced server-side (the hash never reaches the browser) and rate-limited.

Your dataevents.data holds names, optional email/phone, allergies and the expense/purchase records. Stored data is COMMENT-tagged as personal + special-category (health). Erasure: any participant can permanently delete the event (and all its data) from Location → Danger zone → Delete event. No automatic retention — an event is kept until someone deletes it. Contact: endika2@gmail.com.


For developers

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 dev

CI runs lint, typecheck, tests and the production build on every PR.

About

Plan group events and split the costs fairly — availability poll, shared shopping list and expense settlement. Real-time PWA, no login. TypeScript + Supabase. 6 languages.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors