← Back to work
Open source

TripSplit

A SwiftUI app for splitting group and trip expenses, with offline peer-to-peer sync and CloudKit backup.

Role
Solo developer
Tech
Swift, SwiftUI, CloudKit, MultipeerConnectivity, MVVM
View on GitHub →

The problem

Splitting expenses on a group trip is fiddly: everyone pays for different things, and working out the fewest payments that settle everyone up is error-prone on paper.

What I built

TripSplit lets a group create a shared trip, log expenses against any subset of members, and instantly see a settlement plan that minimizes the number of transactions. The interesting part is the sync model:

Architecture

The codebase follows a strict MVVM split: Models/ (pure data), Services/ (CloudKitService, MultipeerService, PersistenceService, SyncService), ViewModels/, and Views/. Utilities like the settlement calculator and invite-code generator are isolated and unit-test-friendly.