Entities and Rules
Core entities
Section titled “Core entities”User: identity, email validity, password/google constraints.Wallet: currency, balance, and member management.Category: scoped categorization for transactions.Transaction: non-zero amount, valid date/currency, ownership fields.Budget: period/status/timeframe rules and collaboration fields.
Source files:
backend/src/Domain/Entities/User.tsbackend/src/Domain/Entities/Wallet.tsbackend/src/Domain/Entities/Category.tsbackend/src/Domain/Entities/Transaction.tsbackend/src/Domain/Entities/Budget.ts
Rule examples
Section titled “Rule examples”- Budget
endDatecannot be beforestartDate. - Transaction
amountcannot be zero. - Wallet currency must be in
SupportedCurrencies.
Internal snippet
Section titled “Internal snippet”if (typeof amount !== 'number' || Number.isNaN(amount) || amount === 0) { throw domainError('INVALID_PAYLOAD', { message: 'Amount must be a non zero number' });}From backend/src/Domain/Entities/Transaction.ts.