This report documents the architectural design, implementation, and trade-off analysis of a distributed expense-sharing application inspired by Splitwise. The system enables users to manage shared expenses across groups through a microservices architecture deployed on Kubernetes. Our implementation demonstrates key distributed systems principles including service decomposition, fault tolerance, inter-service communication, and cloud-native deployment strategies.
Expense sharing among friends, roommates, and colleagues is a common challenge that requires tracking who owes whom and settling balances fairly. Our system addresses this problem by providing:
- Secure user authentication with OTP-based login
- Group formation and management capabilities
- Expense splitting with multiple calculation methods
- Real-time balance tracking and analytics
- ML-powered expenses classification
Our system is decomposed into four independent microservices, each owned by a team member and implemented in different technology stacks to reflect real-world polyglot architectures:
- Authentication Service (Golang + MongoDB) - Developed by Kartikeya Sharma
- Split Service (Java + MySQL) - Developed by Jordan Shodipo
- Analytics Service (Python + MySQL) - Developed by Jiawei Li
- Frontend Application (React) - Developed by Finan Fagan
To set up and run the complete application, use the provided setup.sh script which automates deployment on Minikube:
./setup.shnpm run android- Minikube installed
- Kubernetes CLI (kubectl)
- Docker
- Node.js and npm for frontend
| Service | Developer | Technology Stack |
|---|---|---|
| Authentication Service | Kartikeya Sharma | Golang + MongoDB |
| Split Service | Jordan Shodipo | Java + MySQL |
| Analytics Service | Jiawei Li | Python + MySQL |
| Frontend Application | Finan Fagan | React |
- User registration and OTP-based authentication
- Create and manage expense groups
- Split expenses using various calculation methods
- Real-time balance updates
- Expense analytics and insights
- Machine learning powered expense categorization
The application is designed for Kubernetes deployment and has been tested on Minikube. All services are containerized and can be orchestrated using the provided configuration files.