Splitzy is a modern expense tracking and splitting application built with Expo/React Native. It simplifies group expense management, making it easy to track shared costs, split bills fairly, and settle debts among friends, roommates, or travel groups.
- Multi-Platform: Built with Expo for iOS, Android, and Web
- Smart Expense Splitting: Flexible splitting options (equal, percentage, custom amounts)
- Group Management: Create and manage multiple expense groups
- Real-Time Sync: Live updates across all devices
- Secure Authentication: Email/password and Google OAuth integration
- Receipt Management: Upload and attach receipts to expenses
- Debt Simplification: Advanced algorithms to minimize payment transactions
- Multi-Currency Support: Handle expenses in different currencies
- Settlement Tracking: Record and track payments between group members
- Framework: Expo with TypeScript
- Navigation: File-based routing
- State Management: React Context/Redux (TBD)
- Authentication: Secure token storage with refresh token rotation
- UI: Modern, responsive design
- Framework: FastAPI with Python
- Database: MongoDB for document storage
- Authentication: JWT with refresh token rotation
- File Storage: S3-compatible storage for receipts
- Real-time: WebSocket support for live updates
- Authentication Service: Secure login with email/password and Google OAuth
- User Service: Profile management and preferences
- Group Service: Group creation, member management, and invitations
- Expense Service: Expense tracking, splitting algorithms, and attachments
- Settlement Service: Payment recording and debt resolution
- Notification Service: Real-time updates and notifications
Splitzy_app.mp4
- Node.js (v18 or higher)
- Expo CLI
- MongoDB (for backend)
- Python 3.9+ (for backend)
-
Install dependencies:
npm install
-
Start development server:
npm start
-
Set up Python environment:
cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure environment:
cp .env.example .env # Edit .env with your MongoDB connection string and other config -
Start the server:
uvicorn main:app --reload
- Secure Token Storage: Access tokens in memory, refresh tokens in secure storage
- Token Rotation: Automatic refresh token rotation for enhanced security
- Multi-Provider Auth: Support for email/password and Google OAuth
- Session Management: Track and revoke active sessions across devices
- Flexible Splitting: Equal splits, percentage-based, or custom amounts
- Receipt Attachments: Upload and store receipt images
- Categories & Tags: Organize expenses with custom categories
- Multi-Currency: Handle expenses in different currencies with real-time conversion
- Edit History: Track all changes to expenses with full audit trail
- Invite System: Email-based invitations with secure tokens
- Role Management: Admin and member roles with different permissions
- Group Settings: Customizable group preferences and currencies
- Member Management: Add, remove, and manage group members
- Debt Simplification: Advanced graph algorithms to minimize transactions
- Settlement Tracking: Record real payments and update balances
- Balance Overview: Clear visualization of who owes what to whom
- Payment Reminders: Optional notifications for pending settlements
Splitzy/
├── app/ # Expo app source code
├── backend/ # FastAPI backend (when implemented)
├── docs/ # Technical documentation
│ ├── auth-service.md # Authentication service design
│ └── micro-plan.md # Detailed API specifications
└── README.md
- Authentication: See
docs/auth-service.mdfor detailed auth flow - API Endpoints: See
docs/micro-plan.mdfor complete API specification - Interactive Docs: FastAPI auto-generates docs at
/docswhen backend is running
- Frontend: Expo, React Native, TypeScript
- Backend: FastAPI, Python, MongoDB
- Authentication: JWT with refresh tokens, Firebase Auth (Google)
- Storage: MongoDB for data, S3-compatible for file storage
- Real-time: WebSockets for live updates