1.9 KiB
1.9 KiB
Design
Models
- User
- id:uuid
- name:text
- Tag
- id:uuid
- title:text - Subscription
- sub_category:text - Netflix
- icon_type:text
- Bank
- id:uuid
- name:TextField
- logo:ImageField
- Account
- id:uuid
- user:ForeignKey:User
- bank:ForeignKey:Bank
- account_number:Text
- account_type:select - user, service (useful for distinguishing between user and swiggy/google etc)
- ifsc_code:Text
- swift_bic:Text
- holders_name:Text
- account_type:Option - Savings, Current
- Transaction
- id:uuid
- created_at:datetime
- amount:float
- tag:ForeignKey:Tag
- from_account:ForeignKey:Account
- to_account:ForeignKey:Account
- Recurring Payment
- id:uuid
- user:ForeignKey:User
- from_account:ForeignKey:Account
- to_account:ForeignKey:Account
- frequency:DurationField
- due_on:DateTimeField
- amount:float
- Recurring Payment Transaction
- id:uuid
- recurring_payments:ForeignKey:Recurring Payment
- transaction:ForeignKey:Transaction
APIs
- /api/v1/balance
- used for
- total balance
- balance in bank
- /api/v1/download/statement
- used for
- downloading statement of a bank
- returns
- balance
- message: ⬆ 20% compared to previous month
- /api/v1/transactions
- used for
- all transactions
- transactions of a bank
- transactions to a source
- transactions on a tag
- /api/v1/recurring
- used for
- recently paid recurring transaction
- upcoming recurring transaction
Things Ignored
- Backend
- Linking of Bank Account
- Multiple currency handling
- Not considering assets like FD, Stocks
- i18n
- multi tenancy
- data modelling - way too complex to build the entire app
- Web
- Not mobile responsive, intended to be a mockup
- click to copy
- hover states
- menus