Задача звучит просто: нужен API для приложения или сайта. За ней обычно стоит остальное. Права доступа, чтобы менеджер не видел чужие заказы. Долгие операции вроде выгрузок и рассылок, которые нельзя делать в запросе пользователя. Обмен с внешними сервисами, где важно, что происходит при их сбое. Отдельная история, когда проект достался от прошлого подрядчика и его нужно сначала понять, а потом уже дорабатывать.
Пишу на Laravel по слоям: контроллеры тонкие, логика в сервисах, ответы через ресурсы, единый формат ошибок для фронтенда. Долгое уношу в очереди и планировщик, кеш и счётчики держу в Redis. Модели и миграции проектирую со связями, на созданные методы пишу тесты. Интеграции делаю по документации сервиса, с обработкой отказов и повторами. Окружение поднимаю в Docker, чтобы у всей команды оно совпадало.
Получается backend, который переживает второй месяц эксплуатации: понятная структура, читаемые ошибки, тяжёлые операции не блокируют интерфейс. Проекты с наследством привожу в рабочее состояние без остановки разработки: сначала разбор и описание того, что есть, потом правки по частям.