SmartSplit is an intelligent bill-splitting application that uses AI and OCR technology to simplify the process of splitting bills among friends, family, or colleagues. With SmartSplit, you can easily scan receipts, automatically detect items and prices, assign items to different people, and calculate each person's share including tax and tip.
- AI-Powered Receipt Scanning: Take a photo of your receipt and let our AI instantly recognize all items and prices
- Smart Item Assignment: Easily assign items to different people with a simple tap
- Automatic Calculations: Automatically calculate tax and tip distribution
- User-Friendly Interface: Intuitive and responsive design for a seamless experience
- Real-Time Updates: See everyone's share update in real-time as you make assignments
- Frontend: React with TypeScript
- Styling: TailwindCSS for responsive design
- Icons: Lucide React for beautiful UI elements
- Build Tool: Vite for fast development and optimized production builds
- Backend/Database: Firebase (Authentication, Firestore, Storage)
- Node.js (v14 or higher)
- npm or yarn
- A Firebase account and project
-
Clone the repository
git clone <repository-url> cd GDGAiathon_1 -
Install dependencies
npm install -
Set up environment variables
- Copy the
.env.examplefile to a new file named.env - Replace the placeholder values with your Firebase project details
VITE_FIREBASE_API_KEY=YOUR_API_KEY VITE_FIREBASE_AUTH_DOMAIN=YOUR_PROJECT_ID.firebaseapp.com VITE_FIREBASE_PROJECT_ID=YOUR_PROJECT_ID VITE_FIREBASE_STORAGE_BUCKET=YOUR_PROJECT_ID.appspot.com VITE_FIREBASE_MESSAGING_SENDER_ID=YOUR_MESSAGING_SENDER_ID VITE_FIREBASE_APP_ID=YOUR_APP_ID - Copy the
npm run dev
This will start the development server, typically at http://localhost:5173
npm run build
npm run preview
- Start: Click "Get Started" on the home page
- Scan: Take a photo of your receipt or upload an image
- Split: Assign items to people in your group
- Add participants as needed
- Tap on items to assign them to specific people
- Adjust tip percentage if desired
- Review: Check the summary of how much each person owes
- Share: Share the results with your group
The app uses Firebase for backend services. The configuration is managed through environment variables for security. The Firebase services used include:
- Authentication: For user management
- Firestore: For storing bill data and user information
- Storage: For storing receipt images
The Firebase configuration is set up in src/firebase/config.js.
├── src/
│ ├── components/ # Reusable UI components
│ ├── firebase/ # Firebase configuration and services
│ ├── pages/ # Main application pages
│ │ ├── Home.tsx # Landing page
│ │ ├── ScanBill.tsx # Receipt scanning page
│ │ ├── SplitBill.tsx # Bill splitting interface
│ │ └── Summary.tsx # Final summary page
│ ├── utils/ # Utility functions and mock data
│ ├── App.tsx # Main application component
│ └── index.tsx # Application entry point
├── public/ # Static assets
└── ... # Configuration files
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- This project was bootstrapped with Vite
- UI components powered by TailwindCSS
- Icons provided by Lucide React
