Skip to content

Entities and Rules

  • 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.ts
  • backend/src/Domain/Entities/Wallet.ts
  • backend/src/Domain/Entities/Category.ts
  • backend/src/Domain/Entities/Transaction.ts
  • backend/src/Domain/Entities/Budget.ts
  • Budget endDate cannot be before startDate.
  • Transaction amount cannot be zero.
  • Wallet currency must be in SupportedCurrencies.
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.