DolinaRoz — доставка цветов

https://dolinaroz.by

Интернет-магазин цветов в Минске. Более 1000 букетов из роз, пионов, гортензий. Доставка от 1 часа, онлайн-оплата, 3 точки в городе.

О проекте

DolinaRoz — интернет-магазин цветов в Минске с онлайн-оформлением заказов и доставкой по городу и области. В проекте реализованы удобный каталог с категориями, быстрый путь до покупки, поддержка популярных способов оплаты и коммуникация с клиентами через мессенджеры. Технологический стек проекта: Next.js, Strapi, OpenAI и Telegram API.

page.tsx

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

Как мы разрабатывали

Проектирование начинали с мобильной версии — подход Mobile First позволяет расставить приоритеты интерфейса на раннем этапе и избежать компромиссов при адаптации под большие экраны. Мы сознательно отказались от типовых шаблонных решений: магазины на конструкторах часто выглядят идентично, что размывает идентичность бренда и снижает доверие покупателей.

Разработали собственную дизайн-систему: подобрали фирменную цветовую палитру, выстроили типографическую иерархию и убрали из интерфейса всё, что не ведёт пользователя к покупке. Результат — магазин, в котором интуитивно понятно, что делать, с первых секунд.

Для клиентской части выбрали Next.js: нативная поддержка SSR, SSG и Streaming критична для скорости загрузки и позиций в поиске. Административную панель построили на Strapi — гибкая контент-модель и REST API из коробки позволили реализовать все требования без лишней разработки. После редизайна позиции сайта в органической выдаче не только сохранились, но и заметно выросли.

Как мы внедряли AI

Сайт работает в двух локалях — RU и EN. На старте весь контент управлялся через Strapi CMS вручную. После запуска мы интегрировали OpenAI: теперь все материалы на русском автоматически переводятся и верифицируются перед публикацией в английской локали.

Логика перевода полностью управляется через user-prompt в настройках админ-панели — без изменения кода. Это позволяет настраивать контекст, стиль, правила форматирования и тонкости локализации прямо в интерфейсе, получая предсказуемый результат с первого запуска.

Для перевода используется модель gpt-4o-mini — оптимальный выбор по соотношению скорости и стоимости. Архитектура позволяет переключать модели под конкретные задачи: быстрая модель для рутинного контента, более мощная — для структурированных или нестандартных текстов.

OpenAI

OpenAI Token

OPENAI_TOKEN

OpenAI Rules

OPENAI_RULES

OpenAI Proxy URL

OPENAI_PROXY_URL

OpenAI Prompt Translate

OPENAI_TRANSLATION_PROMPT

1

Ввод в CMS

Answer

ENTRY

PREVIEW

2

Запрос к OpenAI

01

const response = await openai.chat.completions.create({

02

model: 'gpt-4o-mini',

03

messages: [

04

{ role: 'system', content: rules },

05

{ role: 'user', content: inputText },

06

],

07

});

3

AI-перевод

Waiting

4

Сохранение в БД

01

const translated = response.choices[0].message.content;

02

 

03

await strapi.put(

04

`/api/reviews/${review.id}`,

05

{ data: { answer_en: translated } }

06

);

Как работает автоматический перевод

Перевод реализован на уровне серверных lifecycle-хуков Strapi CMS. При каждом создании или обновлении записи — товара, категории, статьи, новости или ответа на отзыв — обработчик автоматически извлекает текстовые поля, формирует запрос к OpenAI Chat Completions API с системным промптом и правилами форматирования из конфигурации, и сохраняет результат в поле целевой локали. Процесс полностью прозрачен для менеджера и выполняется асинхронно в фоне.

Среднее время отклика модели составляет порядка 300 мс, что позволяет завершить перевод практически мгновенно и не блокировать работу в редакторе. Ниже — пошаговая визуализация полного цикла: от ввода текста в форму CMS и формирования запроса к API, через потоковую обработку ответа языковой моделью, до записи переведённого контента в базу данных через Strapi REST API.

Как AI помогает в продвижении сайта

Помимо классического SEO, мы внедрили модуль AI Hints — набор структурированных метаданных, которые помогают AI-системам (ChatGPT, Perplexity, Gemini) точнее понимать контекст бизнеса, тематику страниц и целевую аудиторию. Модуль формирует семантические сигналы на основе Schema.org и практик Generative Engine Optimization (GEO) — направления, которое оптимизирует видимость сайта не только в поисковой выдаче, но и в ответах AI-ассистентов.

Каждое поле — от описания бизнеса и ключевых слов до типа аудитории и географии — преобразуется в структурированные теги, которые AI-краулеры считывают при индексации. Это позволяет поисковым системам и языковым моделям корректно классифицировать сайт, формировать релевантные ответы и чаще цитировать бренд в AI-генерируемых результатах.

Все параметры управляются через интерфейс админ-панели Strapi — без правок кода и деплоя. Менеджер может в любой момент обновить контекст, ключевые слова, тип бизнеса или регион обслуживания, и изменения мгновенно отразятся в метаданных сайта.

AI Hints

Context

*

max. 500 characters

Keywords

max. 255 characters

Business Type

Service Area

Service City

Content Priority

Target Audience

Available Languages

Производительность и поисковая оптимизация

Проект с первого дня построен на Next.js — фреймворке с нативной поддержкой нескольких стратегий рендеринга, каждая из которых применяется там, где даёт наибольший эффект. SSR (Server-Side Rendering) используется для страниц, требующих актуальных данных на каждый запрос. SSG (Static Site Generation) совместно с ISR (Incremental Static Regeneration) обеспечивают мгновенный TTFB для страниц с высокой посещаемостью: ответ отдаётся из CDN-кэша, а фоновая регенерация поддерживает данные свежими без перезапуска сервера. Там, где серверный рендеринг тяжёлый, применяется Streaming — пользователь видит первый значимый контент немедленно, не дожидаясь завершения всей цепочки загрузки.

После запуска мы провели полный технический аудит производительности: собрали базовые метрики Core Web Vitals на реальных устройствах через Chrome UX Report, проанализировали узкие места в бандле (tree-shaking, code splitting, lazy-загрузка компонентов), настроили HTTP-заголовки кэширования, оптимизировали стратегию загрузки шрифтов и изображений (next/image с blur placeholder, приоритет LCP-элементов), а также скорректировали окна ISR revalidation под реальный паттерн обновлений контента.

Результат аудита подтверждён данными Chrome UX Report за последние 28 дней на реальных пользователях: LCP — 0.7 с, INP — 98 мс, CLS — 0. Все три показателя Core Web Vitals укладываются в порог «хорошо», а итоговая оценка — Core Web Vitals Assessment: Passed. Это напрямую влияет на позиции в поисковой выдаче Google: с 2021 года CWV входят в сигналы ранжирования Page Experience, и сильные метрики дают измеримое конкурентное преимущество в органическом поиске.

Core Web Vitals Assessment:

Passed

Expand view

Largest Contentful Paint (LCP)

0.7 s

Interaction to Next Paint (INP)

98 ms

Cumulative Layout Shift (CLS)

0

Other notable metrics

First Contentful Paint (FCP)

0.7 s

Time to First Byte (TTFB) ↗

0.3 s

Latest 28-day period

Full visit durations

Various desktop devices

Various network connections

Many samples (Chrome UX Report)

All Chrome versions

deploy@vps: ~/www/dolinaroz.by

01

02

03

05

06

07

08

09

11

12

13

14

15

16

17

18

20

21

22

23

Инфраструктура приложения

Git-репозиторий и VPS Cloud обеспечивают полный цикл доставки: от коммита до production-окружения. Благодаря автоматизированному pipeline изменения публикуются в течение минуты — без ручного переноса файлов и простоев.

VPS позволяет динамически масштабировать ресурсы под текущую нагрузку. В пиковые периоды конфигурация поднимается оперативно, а в периоды низкой нагрузки — снижается. Это обеспечивает запас отказоустойчивости и оптимизирует операционные затраты на обслуживание сервера.

Хотите так же?

Выберите удобный способ связи, оставьте контакт и мы свяжемся с вами для обсуждения проекта.

Способ связи