Skip to content

triangular-opensource/spliter

Repository files navigation

Distributed Expense-Sharing Application (Splitwise)

1. Executive Summary

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.

2. Business Context

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

3. High-Level Architecture

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

4. Setup Instructions

To set up and run the complete application, use the provided setup.sh script which automates deployment on Minikube:

./setup.sh

Manual Setup Steps

Frontend Application**:

npm run android

Prerequisites

  • Minikube installed
  • Kubernetes CLI (kubectl)
  • Docker
  • Node.js and npm for frontend

5. Team Responsibilities

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

6. Features

  • 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

7. Deployment

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.

Additional Resources

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •