Что за продукт
CraftFood дает мастеру домашней кухни, кондитеру или небольшому производству готовый интернет-магазин под своим брендом. Покупатель открывает ссылку, выбирает позиции и оформляет заказ сам. Владелец видит заявку, клиента, состав, сумму и историю статусов в кабинете или получает ее через MAX.
Публичный продукт работает на craftfood.pro. Отдельные живые демо показывают витрины домашней кухни и кондитерской, поэтому основной сценарий можно проверить без регистрации и презентации.
Что реализовано
- Брендированная витрина с категориями, поиском, карточками, корзиной и оформлением заказа.
- Кабинет с заказами, историей статусов, клиентами и сводной аналитикой.
- Редактор каталога, фотографий, доступности позиций и визуальной темы.
- Уведомления и действия по заказу через MAX.
- Superuser-контур для создания арендаторов, управления подпиской и настройками платформы.
- Платформенная посадочная страница, две бизнес-демонстрации и отдельный SEO-контур арендаторов.
Архитектура
Frontend собран на React 19, TypeScript, Vite и Zustand. Backend — Maven multi-module система на Java 21: Spring Cloud Gateway принимает внешний трафик, auth-service отвечает за пользователей и JWT, main-service хранит каталог, заказы, настройки арендаторов и интеграции. Данные разделены между PostgreSQL-базами, миграции выполняет Liquibase.
Tenant определяется по домену и проходит через gateway в сервисы. Платформа обслуживает основной домен и wildcard-поддомены, а Caddy выпускает HTTPS-сертификаты только для разрешенных CraftFood-хостов. Это позволяет давать каждому магазину отдельный адрес без ручной настройки прокси.
Продакшен на NAS
Статический frontend, gateway, auth-service, main-service и PostgreSQL работают в Docker-контейнерах. Caddy завершает TLS, сжимает ответы и маршрутизирует API. Health endpoint публично подтверждает состояние gateway, а обновления backend и frontend собираются через GitHub Actions.
Почему это сильный кейс
CraftFood показывает весь жизненный цикл продукта: выбранную аудиторию, публичное предложение, живые демо, рабочий checkout, операционный кабинет, многоарендный backend, инфраструктуру, аналитику и путь подключения клиента. Это уже не демонстрация отдельной технологии, а самостоятельный SaaS, который можно развивать по данным реального использования.
