The solution is based on the Hexagonal architecture (https://en.wikipedia.org/wiki/Hexagonal_architecture_(software), https://blog.octo.com/architecture-hexagonale-trois-principes-et-un-exemple-dimplementation/)
Think of your personal bank account experience. When in doubt, go for the simplest solution.
- Deposit and Withdrawal
- Account statement (date, amount, balance)
- Statement printing
The expected result is a checkingAccount API, and its underlying implementation, that meets the expressed needs. Nothing more, especially no UI, no persistence.
In order to save money
As a bank client
I want to make a deposit in my account
In order to retrieve some or all of my savings
As a bank client
I want to make a withdrawal from my account
In order to check my operations
As a bank client
I want to see the history (data, date, amount, balance) of my operations