1. Представь, что заходишь на свой сайт:
- Что ты видишь?
- На какие кнопки нажимаешь, чтобы что-то сделать?
и т.д.
Это интерфейс.
2. Ты нажал на кнопку на сайте:
- Куда идет запрос?
- Какой обработчик/контроллер/эндпоинт?
Это общая архитектура приложения
3. Запрос пришел:
- Какой контроллер должен обработать?
- Какие интерфейсы исполняют эту бизнес логику (можно выделить несколько интерфейсов для разных юз. кейсов)?
- Какой ответ должен получить клиент?
Это уже уровень кода
На уровне кода работаешь с модельками. Тут предлагаю TDD:
- Определи методы/интерфейсы на разные юз. кейсы
- Напиши тесты на каждый юз. кейс
- Напиши реализацию
- Вставь готовый код в контроллер
В общих чертах, можно таким путем идти