This is the mobile frontend for the BillSplit application — a group expense sharing app.
The backend is built with Spring Boot and lives in a separate repository: BillSplit Backend.
- Welcome/Login → Authenticate via Google or email/password
- Add Expense → Add group/individual expenses, split equally or by shares
- Activity Feed → View all transactions and settlements
- Groups → Manage groups, view balances, and settle up
- Profile → Manage account, notifications, and logout
| Login | Add Expense | Activity Feed | Groups | 
|---|---|---|---|
|  |  |  |  | 
- Authentication (JWT-based, Google Sign-In integration)
- Expense management: Add, edit, delete, and view expenses
- Groups: Create and manage groups with members
- Friends system: Add, remove, and manage friends + friend requests
- Activity feed: Track all expense activity with filtering and search
- Profile management: Update profile, change password, manage notifications
- Secure storage of JWT using expo-secure-store
- Auto-logout when JWT is expired or unauthorized
- React Native (via Expo)
- NativeWind for styling (Tailwind in RN)
- React Navigation + Expo Router
- Zustand for global state
- React Native Paper for UI components
- Lucide Icons for vector icons
- Secure storage via expo-secure-store
- API communication with fetch(JWT attached automatically)
app/
_layout.tsx  # Root layout, handles auth redirects
index.tsx  # Welcome / login screen
(tabs)/  # Main navigation (profile, activity, add expense, etc.)
expense-detail/  # Expense detail screens
group-detail/  # Group detail screens
create-group/  # Group creation
hooks/
Auth.ts  # Zustand auth store
api/
axios.ts # Axios instance with JWT + interceptors
auth/
logout.ts  # Global logout utility
global.css # Tailwind styles
git clone https://github.com/soham04/billsplit-frontend.git
cd billsplit-frontendnpm install
# or
yarn install
Create a .env file at the root:
API_URL=http://localhost:8080    # Spring Boot backend
GOOGLE_WEB_CLIENT_ID=xxx.apps.googleusercontent.com
Load them with react-native-config.
Start Metro bundler:
npm start
Run on iOS:
npm run ios
Run on Android:
npm run android
- 
Uses JWT stored securely in expo-secure-store. 
- 
On login, JWT is saved; on logout it is cleared. 
- 
Auto logout occurs if an API call returns 401 Unauthorized. 
- 
RootLayout checks for token on app launch and redirects to (tabs) or index. 
This project requires the BillSplit Backend running locally or remotely.
cd billsplit-backend
./mvnw spring-boot:run
The backend runs on http://localhost:8080 by default.
- 
Welcome/Login → Authenticate via Google or email/password 
- 
Add Expense → Add group/individual expenses, split equally or by shares 
- 
Activity Feed → View all transactions and settlements 
- 
Expense Detail → Drill down into expense info (payer, participants, notes, attachments) 
- 
Profile → Manage account, notifications, and logout 
For backend API testing:
- 
Swagger UI is available at: http://localhost:8080/swagger-ui.html 
- 
You can use Postman collections (see backend repo). 
For frontend testing:
- Use Expo Go app on device or iOS Simulator / Android Emulator.
- 
Fork this repo 
- 
Create a feature branch (git checkout -b feature/awesome-feature) 
- 
Commit your changes (git commit -m "feat: add awesome feature") 
- 
Push to branch (git push origin feature/awesome-feature) 
- 
Create a Pull Request