Районная пекарня хочет, чтобы покупатели заказывали заранее и забирали в назначенное время: тогда утренний наплыв превращается в очередь за готовыми пакетами. Приложение должно учитывать, как пекарня работает на самом деле: выпечку партиями, торты на заказ, ограниченный запас и прилавок, где за полчаса успевают выдать лишь несколько заказов.
Приложение построено вокруг расписания печи. Покупатель собирает пакет и выбирает день и время на шкале, которая уже знает, что возможно: занятые слоты, время до того, как товар испечётся, минимальный срок для заказа на тот же день, крайний срок для тортов. Время, когда весь хлеб и вся выпечка из пакета выходят из печи не раньше чем за 40 минут до выдачи, отмечено как «Тёплое».

О проблемах приложение говорит простыми словами ещё до оформления заказа: торт нужно было заказать до 18:00 накануне, на субботу осталось только 2 торта, а в пакете 3, выбранное время уже прошло. После заказа покупатель получает код выдачи и уведомления в приложении: когда заказ отправился в печь и когда он готов. Кнопка «Прокрутить день выдачи» показывает это утро за несколько секунд. История заказов с кнопкой «Заказать снова», светлая и тёмная темы, управление с клавиатуры и поддержка экранного диктора.


Как это сделано: Expo и React Native на TypeScript, один код для iPhone, Android и веба. Все правила пекарни собраны в одном модуле, его покрывают автотесты, которые запускаются в трёх часовых поясах. Сквозные тесты проводят веб-версию через весь заказ: уведомления, сохранение после перезагрузки, сообщения об ошибках, размеры телефонов, обе темы и управление с клавиатуры. По ссылке открывается веб-версия; на настоящем iPhone или Android-телефоне это демо не запускалось.

В реальном проекте приложение публикуется в App Store и Google Play на ваших аккаунтах; следующие шаги — оплата картой, настоящие push-уведомления, экран для персонала и связь с вашей кассой или складом. Ежемесячная поддержка от 150 USD: обновления Expo и React Native, проверка на новых версиях iOS и Android, новые требования магазинов приложений, изменения меню и текстов.
