CheddarBooks LaundryLog Domain Model

This note captures the current domain language and the core functional requirements.

Core Domain Language

The current domain language should prefer:

  • command: LogLaundryExpense
  • event: LaundryExpenseLogged

The current understanding is that:

  • the expense is the key business fact
  • washer, dryer, and supplies are expense types, not separate event kinds
  • session context is useful in the UI and workflow, but is not more important than the expense fact itself

Functional Requirements

LaundryLog must support:

  1. setting or confirming a laundry location
  2. logging expenses by type:
  3. washer
  4. dryer
  5. supplies
  6. entering quantity
  7. entering unit price
  8. calculating entry total from quantity and unit price
  9. capturing payment method
  10. showing running session total
  11. logging multiple entries during one laundry session

UX Pressure On The Domain Model

The domain model should stay compatible with:

  • low-friction mobile entry
  • repeated entry within one session
  • enough detail for later reporting
  • a UI that can show session context without making session context the primary business fact