Интернет-магазин свежих овощей и фруктов с рынка
Московский сервис «личный закупщик» работает без склада: покупатель выбирает день доставки, а закупщик в этот день едет на рынок и сам отбирает каждую позицию. Типовой магазин под такую модель не подходил: цена меняется каждый день, точный вес известен только после взвешивания, у приёма заказов есть крайний срок, ассортимент зависит от сезона, а продажи держатся на доверии к закупщику.
Витрина с честной вилкой цены и выбором дня доставки, личный кабинет, блог, серверная часть и админ-панель из 11 разделов, в которой владелец сам ведёт товары, цены, сезонные предложения и заказы. Развернул проект на сервере в Docker.
Покупатель ещё до оформления видит, из чего сложится цена и когда привезут заказ. Владелец сам управляет товарами, ценами, сезонными предложениями, днями доставки и статьями, а о каждом заказе сразу узнаёт в Telegram.
- Собственная админка без абонплаты
- Редактор статей как в Notion
- Свой мониторинг ошибок

Честная вилка цены вместо ценника
Покупатель заранее видит примерную сумму заказа и знает, что заплатит по фактическому весу.
Товары продаются ящиками, а цена на рынке меняется каждый день. Поэтому на карточке вместо фиксированной цены показана примерная стоимость и из чего она складывается: вес ящика «от и до», умноженный на сегодняшнюю цену за килограмм. Точная сумма становится известна после взвешивания.
Доставка в выбранный день
Покупатель с первого экрана знает, когда привезут заказ, а закупщик получает заказы к конкретному дню закупки.
День доставки выбирается прямо на главной странице из ближайших шести. Заказы принимаются до 21:00 накануне. Ближайшая дата рассчитывается автоматически и видна на первом экране, а выбранный день подставляется в заказ. Время приёма заказов владелец меняет в админке.
Варианты товара и сезонность
Покупатель выбирает конкретный вариант и сразу видит, что сейчас на пике сезона.
У товара может быть несколько вариантов — по стране происхождения и калибру, у каждого своя цена и свои фото. Отдельный раздел «Сезонное» с отметкой «пик сезона» владелец заполняет из админки.
Сайт вокруг личного бренда
Покупатель знает, кто и как выбирает для него продукты.
На сайте есть блоки «Как это работает» и «Свежее, чем в супермаркете», заметки закупщика на карточках товаров, отзывы с оценкой и блог с рубриками.
Личный кабинет с входом в один клик
Повторный заказ оформляется быстрее: пароль не нужен, адрес уже сохранён.
Вход через Яндекс ID. В кабинете — история заказов, избранное, отзывы и комментарии. Сохранённые адреса подставляются при оформлении заказа.
Ни один заказ не теряется
Заказ не потеряется из-за сбоя уведомлений и не оформится по устаревшей цене.
Заказы и заявки сразу приходят владельцу в Telegram и на почту. При оформлении сервер заново считает сумму по текущим ценам и проверяет наличие. Если цена изменилась или уведомление не дошло, заказ отмечается в админке.
Админ-панель из 11 разделов
Товары, цены, сезон, дни доставки и статьи владелец ведёт сам, без разработчика.
Главная панель показывает заказы, выручку, товары по наличию и заказы, которые требуют внимания. В товарах и категориях — варианты и цены, наличие (есть, предзаказ, нет), похожие товары, категории любой вложенности и SEO-настройки. Медиатека с папками: загруженные фото сами сжимаются в WebP и подгоняются под нужный размер. Статьи собираются из блоков — текста, изображений, цитат и видео, а подборки товаров вставляются прямо в текст. Отдельно — модерация отзывов и комментариев, настройки доставки и сезона.
SEO и скорость
Страницы быстро открываются и готовы для поисковиков, а правки из админки видны на сайте сразу.
Для каждого товара, категории и статьи настраиваются мета-теги, картинки для соцсетей и индексация. Карта сайта (sitemap.xml) создаётся автоматически, микроразметка описывает магазин, товары с ценами, статьи и хлебные крошки. Страницы собираются на сервере и кэшируются, поэтому открываются быстро. Подключаются Яндекс.Метрика и Google Analytics.
Надёжность и безопасность
Сбои и подозрительные входы не проходят незамеченными.
Формы защищены от спама и ботов, вход в админку — от подбора пароля: все входы пишутся в журнал, а при входе с нового IP-адреса приходит письмо. Ошибки сервера и браузеров покупателей собираются в админке. Сайт работает на сервере в Docker, работоспособность проверяется автоматически.
Next.js 15, React 19, TypeScript, Tailwind CSS, NestJS, Prisma, PostgreSQL, Docker.