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 дазваляе дынамічна маштабаваць рэсурсы пад бягучую нагрузку. У пікавыя перыяды канфігурацыя падымаецца аператыўна, а ў перыяды нізкай нагрузкі — зніжаецца. Гэта забяспечвае запас адмоваўстойлівасці і аптымізуе аперацыйныя выдаткі на абслугоўванне сервера.

Хочаце так жа?

Абярыце зручны спосаб сувязі, пакіньце кантакт і мы звяжамся з вамі для абмеркавання праекта.

Спосаб сувязі