PayBack helps friends, trips, and groups split expenses with clarity.
apps/ios/PayBack: iOS app (SwiftUI + XcodeGen)apps/backend/convex: Convex backend functionsapps/web: landing page (TanStack Router + Vite + Tailwind v4)apps/android: Android scaffold shellpackages/*: shared config and design token packages
- Install prerequisites:
brew install bun xcodegen
- Install workspace dependencies:
bun install
- Generate the Xcode project:
xcodegen generate
# Run all workspace checks
bun run ci
# iOS CI parity test run
./scripts/test-ci-locally.sh
# Backend dev server
bun run --filter @payback/backend dev
# Web landing dev server
bun run --filter @payback/web devConvex functions live in apps/backend/convex and are wired from root convex.json.
bunx convex dev
bunx convex deployThe app automatically selects the correct Convex deployment using build config + scheme:
- Debug config: development Convex deployment (local runs)
- Internal config: development Convex deployment (internal testing archives)
- Release config: production Convex deployment (external TestFlight + App Store)
Scheme mapping:
PayBackInternalarchives withInternalPayBackarchives withRelease
No runtime env vars are required for iOS app routing; PAYBACK_CONVEX_ENV is baked into Info.plist at build time.
Authentication is handled by Clerk. The Clerk publishable key is configured in AppConfig.swift.
MIT License - see LICENSE.