-
Notifications
You must be signed in to change notification settings - Fork 23
Closed
Labels
Description
🎯 Overview
The Expense Service is a critical missing component of the Splitwiser backend. This service will handle expense management, splitting algorithms, and settlement calculations.
📋 Requirements
Core Features to Implement:
-
Expense CRUD Operations
- Create, read, update, delete expenses within groups
- Support for different splitting methods (equal, percentage, custom amounts)
- Expense validation and business logic
-
Smart Settlement System
- Implement directed graph algorithm for debt minimization
- Calculate optimized settlements to reduce transaction count
- Support for manual settlement recording
-
Friends Balance Aggregation
- Cross-group balance calculations
- Real-time balance updates
- User balance summaries
-
File Attachment Support
- Receipt upload functionality
- File storage integration (S3-compatible)
- Attachment management
API Endpoints to Implement:
POST /groups/{group_id}/expenses
GET /groups/{group_id}/expenses
GET /groups/{group_id}/expenses/{expense_id}
PATCH /groups/{group_id}/expenses/{expense_id}
DELETE /groups/{group_id}/expenses/{expense_id}
POST /groups/{group_id}/expenses/{expense_id}/attachments
GET /groups/{group_id}/expenses/{expense_id}/attachments/{key}
POST /groups/{group_id}/settlements
GET /groups/{group_id}/settlements
PATCH /groups/{group_id}/settlements/{settlement_id}
DELETE /groups/{group_id}/settlements/{settlement_id}
POST /groups/{group_id}/settlements/optimize
GET /users/me/friends-balance
GET /users/me/balance-summary
GET /groups/{group_id}/users/{user_id}/balance
🔗 Dependencies
- Integrates with existing Group Service
- Requires authentication via Auth Service
- Uses MongoDB collections:
expenses,settlements
📚 Documentation
🏗️ Implementation Tasks
- Create
backend/app/expenses/module - Implement expense models and schemas
- Create expense service with business logic
- Build REST API routes
- Add comprehensive test coverage
- Integrate with main application
🎯 Priority
High Priority - This is a core feature required for MVP functionality.
🏷️ Labels
enhancement, backend, high-priority, expense-management
Reactions are currently unavailable