A collaborative expense-sharing and group management backend built with Django REST Framework, designed to power applications like Splitwise.
This backend provides full support for user management, groups, expenses, balances, settlements, and invitations with a ready-to-use API.
| Feature | Description |
|---|---|
| User Management | Email-based login, JWT authentication, profile management, password reset |
| Groups | Create/manage groups, add/remove members, invite via email |
| Expenses | Add, split, and manage group expenses (equal/unequal/percentage splits) |
| Balances | Simplified debt calculation: shows who owes whom and how much |
| Settlements | Settle debts, with history tracking and validation |
| Activity Feed | Track group activities (expenses, settlements, members joining/leaving) |
| Invitations | Token-based invitation system with expiration support via email |
- User – Custom user model (email as username, avatar support).
- Group – Collection of members & expenses; categorized (Trip, Home, etc.).
- Category – Classifies groups for better organization.
- Membership – Links users to groups (role-based: owner, admin, member).
- Expense – Group expenses with title, amount, payer, split type.
- ExpenseParticipant – Each user’s share in an expense (amount/percentage).
- Invitation – Email invitation system with token acceptance.
- Backend: Django, Django REST Framework
- Database: PostgreSQL / SQLite (for local development)
- Auth: JWT-based authentication
- Media: File upload support for avatars (Users & Groups)
- Email: SMTP integration for invitations (Mailtrap.io)
Base URL: /api/v1/
Follow the steps below to run the backend locally.
git clone https://github.com/SHUBHAM-NIRMAL18/bill-split.git
cd bill-split