A modern web application for splitting restaurant bills with OCR functionality. Upload a photo of your receipt, add attendees, allocate items, and calculate individual totals with tips.
- 📸 OCR Bill Scanning: Upload photos of receipts and automatically extract items and prices
- 👥 Multi-person Support: Add multiple attendees and assign items to each person
- 🧮 Smart Allocation: Distribute items among people with quantity controls
- 💰 Tip Calculation: Add customizable tip percentages to each person's total
- 📱 Responsive Design: Works on desktop, tablet, and mobile devices
- 📄 Export Summary: Download a text summary of the bill split
- Frontend: React 18, Tailwind CSS, Lucide React icons
- Backend: Node.js, Express.js
- OCR: Tesseract.js for text recognition
- File Upload: Multer for handling image uploads
-
Clone or navigate to the project directory
cd "Bill Splitter"
-
Install all dependencies
npm run install-all
-
Start the development servers
npm run dev
This will start both the backend server (port 5000) and frontend development server (port 3000).
-
Open your browser Navigate to
http://localhost:3000to use the application.
- Upload a clear photo of your restaurant receipt
- The OCR will automatically extract items and prices
- Review the scanned text for accuracy
- Enter the names of everyone splitting the bill
- Add or remove people as needed
- Ensure all names are unique
- Assign each bill item to the people who ordered it
- Use the +/- buttons to adjust quantities
- Ensure all items are fully allocated
- Set the tip percentage (15%, 18%, 20%, or custom)
- Review individual totals for each person
- Download a summary or start over
POST /api/ocr- Process uploaded receipt imagesPOST /api/calculate- Calculate bill split with tipsGET /api/health- Health check endpoint
- Ensure good lighting when taking photos
- Keep the receipt flat and avoid shadows
- Make sure all text is visible and not cut off
- Higher resolution images work better
- Avoid blurry or angled photos
Bill Splitter/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── App.js # Main app component
│ │ └── index.js # Entry point
│ └── package.json
├── server/ # Express backend
│ ├── index.js # Server entry point
│ └── package.json
└── package.json # Root package.json
npm run dev- Start both frontend and backend in development modenpm run server- Start only the backend servernpm run client- Start only the frontend development servernpm run build- Build the frontend for productionnpm run install-all- Install dependencies for all packages
MIT License - feel free to use this project for personal or commercial purposes.