Skip to content

architagrawal/prismSplit

Repository files navigation

PrismSplit

The Standard for Shared Finance

Refracting the chaos of group expenses into clarity.


Status Framework React Native TypeScript


The Problem

Most expenses aren't split 50/50.

You order a steak, they order a salad. You share an appetizer, but someone else had three drinks.

  • "Why am I paying for your cocktail?" — traditional "even split" apps are unfair.
  • "I'll figure out the math later." — manual itemization on napkins is error-prone.
  • "Who had the extra side?" — confusion leads to social friction.

The result? You pay more than your fair share just to avoid the hassle.


The Solution

PrismSplit: Item-Level Bill Splitting with AI Receipt Scanning.

We built the system designed for true fairness. PrismSplit replaces "even splits" with granular precision, allowing everyone to pay exactly what they owe.

  • Scan It. Point your camera at a receipt — AI extracts every item in seconds.
  • Itemize It. Break down bills item-by-item with inline editing.
  • Split It. Equal, percentage, shares, or exact amounts — per item or per bill.
  • Settle It. Real-time balances, one-tap settlement.

Key Features

AI Receipt Scanning

Capture a receipt photo → AI extracts merchant, items, tax, tip → review and edit inline → create bill. Handles multi-image receipts with parallel upload and discount normalization.

Smart Bill Creation

  • Dual-mode entry: Simple amount or itemized breakdown
  • Ledger-style item editor: Focus-driven expandable rows, auto-advance keyboard flow, swipe-to-delete
  • Auto-category detection: Type "uber" → auto-selects Transport
  • 4 split methods: Equal (toggle participants), Unequal (exact amounts), Percentage, Shares — with live redistribution

Groups & Social

  • Invite links & QR codes for instant group joining
  • Guest members — add friends who don't have the app yet; they claim their history on signup
  • Multi-currency support per group
  • Group quota system with tier-based limits

Financial

  • Real-time balances with animated number transitions
  • Settlement tracking with one-tap settle-up
  • Bill-level and item-level discounts — correctly calculated through the entire stack
  • Tax & tip intelligence — proportional or equal distribution with inline mode selector

Tech Stack

Layer Technology Purpose
Framework Expo SDK 54 + React Native 0.81 Cross-platform mobile
Language TypeScript Type safety
Backend Supabase PostgreSQL, Auth, Realtime, Edge Functions, Storage
State Zustand + TanStack Query Client state + server cache with optimistic updates
UI Tamagui Compiled styles, theming, 60fps animations
Animations React Native Reanimated Layout transitions, gesture-driven interactions
Storage MMKV + EncryptedStorage Offline cache + secure keychain
AI Gemini (via Edge Functions) Receipt OCR and item extraction
Analytics PostHog + Firebase + Sentry Usage tracking, crash reporting, error monitoring
Validation Zod + React Hook Form Runtime schema validation

Design System

4-font typography system with strict role separation:

  • Sora — Body text, inputs, descriptions
  • Space Grotesk — Page titles, hero text
  • Outfit — UI chrome: badges, labels, section headers
  • SpaceMono — Currency amounts, tabular numbers

Theme-aware components with light/dark mode, brand color overrides, and 12-color avatar palette.


Architecture

src/
├── app/                    # Expo Router (file-based routing)
│   ├── (auth)/             # Auth screens (login, signup)
│   ├── (tabs)/             # Main tabs (Home, Groups, Activity, Friends)
│   ├── bill/               # Bill flows (create, edit, scan, review, processing)
│   └── group/              # Group screens (details, settings, edit)
├── components/
│   ├── ui/                 # Design system (Avatar, SwipeableRow, Button, etc.)
│   ├── bill/               # Bill components (LedgerItemRow, SplitModal, etc.)
│   ├── home/               # Dashboard (BalanceCard, SmartFeed, TopCircle)
│   └── group/              # Group components
├── hooks/                  # Custom hooks (useThemeColors, useAnalytics, etc.)
├── lib/
│   ├── store/              # Zustand stores (auth, bills, groups, UI, quota)
│   ├── services/           # Service layer (billService, notifications)
│   ├── utils/              # Utilities (billCalculations, formatting)
│   └── supabase.ts         # Supabase client singleton
├── theme/                  # Design tokens, typography, themes
└── types/                  # Shared TypeScript interfaces

Data Flow

graph LR
    User -->|Interacts| UI[Tamagui UI]
    UI -->|Updates| Store[Zustand Store]
    Store -->|Syncs| Query[TanStack Query]
    Query -->|Persists| DB[(Supabase Postgres)]
    DB -->|Pushes| Realtime[Realtime Events]
    Realtime -->|Refreshes| UI
    Camera -->|Captures| Upload[Supabase Storage]
    Upload -->|Processes| Edge[Edge Function + Gemini]
    Edge -->|Returns| Review[Structured Items]
    Review -->|Creates| Store
Loading

Getting Started

Prerequisites

  • Node.js 18+
  • Expo CLI (npm install -g expo-cli)
  • iOS Simulator / Android Emulator / Physical device with Expo Go

Installation

git clone https://github.com/architagrawal/prismsplit.git
cd prismsplit/src
npm install

Configuration

Create a .env file in src/ with your Supabase credentials:

EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_KEY=your-anon-key-here

Run

npx expo start

Project Status

Active Development — V1.1 shipped with AI receipt scanning, ledger-style item editor, and redesigned split flow.

Recent (April 2026)

  • Redesigned itemize modal with ledger-style inline editing
  • Redesigned receipt review screen with inline item editing
  • Redesigned split customization modal
  • Redesigned alert dialog system
  • Auto-advance keyboard flow across item fields
  • Scroll-synced keyboard management
  • Item validation with auto-focus on incomplete fields

Planned

  • Smart Feed with pending approvals and settle requests
  • Offline write queue with conflict resolution
  • Self-select flow (each participant claims their own items)

ArchitectureFeaturesContributing


Copyright (c) 2025-2026 Archit Agrawal. All rights reserved.

Packages

 
 
 

Contributors