Split group expenses fairly, without the spreadsheet math or the awkward "you owe me" texts.
VibeSplit is a group-expense tracker built for the day-to-day reality of splitting bills with friends — canteen runs, weekend trips, shared projects. Create a trip, add members, log who paid for what, and VibeSplit computes a fair settlement automatically. Guests can join a trip via a shareable link without creating an account.
- Trips — create a named trip for any occasion (outing, fest, weekend getaway)
- Shareable invites — members join via a link, no account required (guest mode)
- Expense logging — record who paid and who it was for; supports itemized splits
- Automatic settlement — computes the minimal set of payments needed to balance everyone out
- Trip history — past trips and spending are retained per user
- Light/dark theme — theme preference persisted via React Context
- Toast notifications & error boundaries — user-facing feedback and crash isolation
| Layer | Technology |
|---|---|
| Frontend | React 18, React Router 6 |
| Backend / Data | Firebase (Auth + Firestore) |
| State | React Context (ThemeContext, ToastContext) |
| Testing | React Testing Library |
| Deployment | GitHub Pages (gh-pages) |
- Node.js 18+
- A Firebase project (Firestore + Authentication enabled)
git clone https://github.com/https-shubhamsahu/VibeSplit.git
cd VibeSplit
npm installCreate a Firebase config in src/firebase.js with your project's credentials (API key, project ID, etc.).
npm startOpens at http://localhost:3000.
npm run build
npm run deploy # publishes build/ to GitHub Pagessrc/
├── App.js # Router + top-level layout
├── Home.js # Landing page
├── Dashboard.js # User's trip list
├── JoinTrip.js # Join-by-link flow
├── About.js
├── components/
│ ├── ThemeToggle.js
│ ├── Toast.js
│ ├── ErrorBoundary.js
│ ├── LoadingSpinner.js
│ └── UserHistory.js
├── contexts/
│ ├── ThemeContext.js
│ └── ToastContext.js
├── services/
│ ├── authService.js
│ ├── analyticsService.js
│ ├── historyService.js
│ └── tripHistoryService.js
├── trip/
│ ├── TripForm.js # Create a trip
│ ├── TripScreen.js # Trip dashboard
│ ├── AddMember.js
│ ├── MemberList.js
│ ├── ExpenseForm.js
│ ├── ExpenseList.js
│ ├── BalanceSheet.js # Settlement calculation + display
│ └── ShareTrip.js
└── firebase.js # Firebase app initialization
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes and open a pull request
Shubham Sahu — Electronics & Computer Engineering, Thakur Shyamnarayan Engineering College GitHub · Socials