Skip to content

🚀 Implement Expense Service - Core Backend Component #16

@Devasy

Description

@Devasy

🎯 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

  1. Create backend/app/expenses/ module
  2. Implement expense models and schemas
  3. Create expense service with business logic
  4. Build REST API routes
  5. Add comprehensive test coverage
  6. Integrate with main application

🎯 Priority

High Priority - This is a core feature required for MVP functionality.

🏷️ Labels

enhancement, backend, high-priority, expense-management

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions