Split expenses effortlessly with friends, family, and roommates
A React Native app for tracking shared expenses with receipt scanning and automated bill splitting.
- Cross-Platform: iOS & Android support
- Receipt Scanning: Tesseract OCR data extraction
- Friend/Group Management: Create and manage friends & groups
- Dark/Light Mode: Theme switching
- Splitsy Product Report - Presents the user-centered research, 10-participant within-subject study, and findings showing Splitsy cuts task time by 33 seconds and lifts satisfaction to 88.3/100 versus manual splitting.
- Splitsy Implementation Report - Covers design iterations, cross-platform architecture (React Native, Expo, Node/Express, MongoDB, JWT), the Python OCR microservice, testing process, and team reflections.
- Node.js 18.0+
- Expo Go app on your phone
git clone https://github.com/JettNguyen/Splitsy.git
cd Splitsynpm install
npm install expo
cd backend
npm install# Mac
brew install tesseract
# OR download through the tesseract installer page for Windows machines with link below:In backend/python_ocr/main.py, select the tesseract path based on what OS you have
- Ensure it is named
.env
- If you do not know your IP, run
ipconfig(Windows) orifconfig(Mac) - Replace
IP_ADDRESS's IP value on line 2 ofSplitsy/.env - Replace
IP_ADDRESS's IP value on line 6 ofSplitsy/app.config.js - Replace
BACKEND_URL's IP value on line 19 ofSplitsy/components/ReceiptScanner.js(after "https://" and before the ":5000")
# terminal 1: start backend server
cd backend
node server.js# OR use this: backend server that refreshes upon every change
npm install -g nodemon
nodemon server. js#terminal 2: start frontend
npm start#terminal 3: start python ocr microservice
cd backend/python_ocr
python -m venv venv #start python environment
venv\Scripts\activate # windows
source venv/bin/activate # mac/linux
pip install flask flask-cors pillow pytesseract werkzeug #install dependencies
python main.py #run the flask server- Scan the QR code with Expo Go app
- Frontend: React Native, Expo
- Backend: Node.js, Express, MongoDB
- Database: MongoDB
- Authentication: JWT tokens
- OCR: Receipt scanning and data extraction
- Icons: Expo Vector Icons
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profile
GET /api/groups- Get user's groupsPOST /api/groups- Create new groupPUT /api/groups/:id- Update groupDELETE /api/groups/:id- Delete groupPOST /api/groups/:id/members- Add member to groupDELETE /api/groups/:id/members/:userId- Remove member from group
GET /api/transactions/:groupId- Get group transactionsPOST /api/transactions- Create new transactionPUT /api/transactions/:id- Update transactionDELETE /api/transactions/:id- Delete transaction
AI was utilized in this project to assist in setting up the initial code environment and address specific backend implementation issues.