Split bills, not friendships.
BillBreak is a modern, intelligent bill-splitting application that makes dividing expenses among friends fair and effortless. No more awkward calculations or debates about who owes what.
Splitting bills shouldn't require a math degree. Yet every group dinner ends the same way:
- "Who had the extra drink?"
- "Should we just split equally?" (unfair to the person who only had salad)
- "Can someone calculate the tax for each person?"
- "I only had 2 of the 5 cokes, why am I paying for all of them?"
BillBreak solves this.
Upload a photo of your receipt and let Google's Gemini AI extract all items automatically. No manual typing required.
- Add people with a single tap
- Each person gets a unique color identity (Emerald, Blue, Purple, Rose)
- Visual avatars make tracking assignments intuitive
Single Items β Tap to assign, tap again to split
Pizza β Alice (full item)
Pizza β Alice + Bob (split 50/50)
Ratio-Based Splitting β For uneven consumption (NEW!)
Paneer Butter Masala (βΉ320):
β Alice: 75% (βΉ240) β she ate most of it
β Bob: 25% (βΉ80) β just had a taste
Available ratios: 50/50, 75/25, 60/40, 70/30, 80/20, and more
Multi-Quantity Items β Assign exact amounts with 0.5 increments
5 Coca-Colas (βΉ60 each):
β Alice: 2.5 cokes (βΉ150)
β Bob: 1.5 cokes (βΉ90)
β Carol: 1 coke (βΉ60)
Intuitively drag items to users for quick assignment. Works on both desktop and mobile.
| Key | Action |
|---|---|
/ |
Open "Add Person" input |
Enter |
Confirm/submit |
Escape |
Cancel/close |
- Real-time progress bar showing "Bill Covered" percentage
- Animated subtotals update as you assign items
- Tax and tip split proportionally based on each person's share
- Mobile: Vertical item list with bottom user dock
- Desktop: Split-screen layout (60/40) with sidebar
Download your bill split as a beautiful, shareable receipt:
- PNG β Perfect for sharing on WhatsApp/Instagram
- PDF β Great for records and expense reports
- Clean white background design for readability
- Includes complete breakdown per person
- Dark theme with glassmorphism effects
- Smooth Framer Motion animations
- Beautiful color-coded user system
| Scenario | How BillBreak Helps |
|---|---|
| Restaurant dinner | Scan receipt, assign individual dishes, split shared appetizers |
| Pizza party | 3 pizzas, 8 people β assign slices, not whole pizzas |
| Grocery shopping | Split items by who actually uses them |
| Drinks round | 5 beers ordered, but Dave only had 2.5 (half-drink support!) |
| Shared curry | Someone ate 75% of the dish? Use ratio split! |
| Shared Uber | Split the fare proportionally |
| Office lunch order | Everyone pays for what they ordered + their share of delivery fee |
| Technology | Purpose |
|---|---|
| React 19 | UI framework with latest features |
| TypeScript | Type-safe development |
| Vite | Lightning-fast dev server & build |
| Tailwind CSS v4 | Utility-first styling |
| React Router 7 | Client-side routing |
| Framer Motion | Smooth animations |
| dnd-kit | Accessible drag-and-drop |
| Shadcn/UI | Beautiful, accessible components |
| Google Gemini AI | Receipt image parsing |
| html2canvas | HTML to image conversion |
| jsPDF | PDF document generation |
| Route | Screen | Description |
|---|---|---|
/ |
Upload | Home screen - upload receipt or start manually |
/split |
Assign | Split items among people |
/results |
Results | Final breakdown of who owes what |
- Feature-based structure β Code organized by domain (
features/upload,features/splitter) - Context + useReducer β Predictable state management without Redux overhead
- React Router β URL-based navigation with browser back/forward support
- Discriminated unions β Type-safe actions for all state changes
- Selector pattern β Computed values derived from single source of truth
https://drive.google.com/file/d/1_1ReQ4AzmHOtOmFGIqve_I4C4_DJEGrN/view?usp=drive_link
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/billbreak.git
cd billbreak
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Add your Google AI API key to .env
# Start development server
npm run devVITE_GOOGLE_AI_KEY=your_google_ai_api_key_hereGet your free API key at Google AI Studio
Core Bill Splitting Experience
- Receipt image upload with AI parsing
- Manual item entry
- User management with color coding
- Single-item assignment (toggle/split)
- Multi-quantity item assignment (uneven splits)
- Ratio-based splitting (75/25, 60/40, etc.)
- Drag-and-drop item assignment
- Tax & tip proportional distribution
- Real-time calculations
- Results summary with breakdown
- SplitSlip β Download as PDF/PNG
- Demo bill for testing
- Responsive mobile/desktop layouts
- Beautiful animations & transitions
Stay tuned for exciting features:
- π User Authentication β Save your bill history
- πΎ Cloud Sync β Access bills across devices
- π€ Share Summary β Send breakdown via WhatsApp/SMS
- π³ Payment Integration β Settle up with UPI/PayPal
- π§Ύ Bill History β Track past splits and settlements
- π₯ Groups β Create recurring groups (roommates, colleagues)
- π Multi-currency β Split international trips
- π Analytics β See spending patterns with friends
- π Reminders β Nudge friends who haven't paid
src/
βββ components/ui/ # Reusable UI components (Shadcn)
βββ context/bill/ # State management (Context + Reducer)
β βββ actions.ts # Action creators
β βββ reducer.ts # State transitions
β βββ selectors.ts # Computed values
β βββ types.ts # Action type definitions
βββ features/
β βββ upload/ # Receipt upload & parsing
β β βββ components/
β β βββ hooks/
β β βββ screens/
β βββ splitter/ # Bill splitting UI
β βββ components/
β β βββ SplitSlip.tsx # Downloadable receipt
β β βββ ...
β βββ hooks/
β β βββ useDownloadSplitSlip.ts # PDF/PNG generation
β βββ screens/
βββ lib/
β βββ gemini.ts # AI service
β βββ utils.ts # Helper functions
βββ types/ # Shared TypeScript types
Please refer to DOCUMENT.md file in the repo for detailed information about architecture and whole codebase
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Shadcn/UI for beautiful components
- Google Gemini for AI-powered receipt parsing
- Framer Motion for smooth animations
- dnd-kit for accessible drag-and-drop
- html2canvas for HTML to image conversion
- jsPDF for PDF generation
Made with β and code
Because friends who split fairly, stay friends.