Інтернет-магазин кліматичного обладнання
Коли лідер ринку кліматичної техніки вирішує створити сучасний інтернет-магазин, результатом стає масштабний проєкт на перетині ритейлу та B2B-сектору. Саме таке рішення створила наша команда для Cooper&Hunter Україна — провідного виробника кліматичного обладнання, який щодня забезпечує комфорт у тисячах домівок і бізнесів у всій країні. Це не просто інтернет-магазин на Laravel з онлайн-каталогом і кнопкою «Купити», а повноцінна платформа для взаємодії виробника, дилерів, монтажників і кінцевих споживачів.
Читайте наш кейс про розробку інтернет-магазину на Laravel, де продумана UX-логіка, зрозуміла структура та приємний інтерфейс поєднуються в єдину екосистему, здатну автоматизувати роботу великої компанії — від продажу до сервісного обслуговування техніки.
Дивіться також:
B2B інтернет-магазин запчастин для турбокомпресорівПро клієнта та проєкт — інтернет-магазин на Laravel
Cooper&Hunter (C&H) — американський бренд кліматичного обладнання, представлений у більш ніж 50 країнах світу, зокрема в Україні. Компанія виробляє побутові та промислові кондиціонери, системи вентиляції, теплові помпи й іншу продукцію.
На українському ринку бренд працює через розгалужену мережу офіційних дилерів і сертифікованих монтажних організацій. Зростання бізнесу та необхідність контролю якості обслуговування привели до потреби в єдиній онлайн-платформі. Замість розрізнених інструментів для продажів, обліку монтажних робіт і сервісного обслуговування компанія вирішила створити інтегровану систему, що об’єднала б усіх учасників процесу. Так, проєкт передбачав створення інтернет-магазину на Laravel з великим каталогом і багаторівневою системою доступу для споживачів, дилерів і монтажників.
Завдання зі створення інтернет-магазину на Laravel
Перед командою Webnauts постало комплексне завдання розробити мультимовний інтернет-магазин на Laravel — з унікальним дизайном, адаптивною версткою та зручним функціоналом для покупців, і не тільки.
Крім каталогу з глибокою структурою, розширеною фільтрацією та детальними картками товарів ми мали реалізувати персональний кабінет для кожної групи користувачів, а саме:
- споживачів — з історією замовлень, відстеженням гарантій, поданням звернень і оцінкою монтажу;
- монтажників — з календарем планових робіт, особистим рейтингом і чатом для звернень;
- дилерів — для контролю заявок, ведення клієнтської бази та створення нарядів у різних регіонах.
Це мав бути приклад сайту на Laravel, де публічна частина поєднується з потужною адмінпанеллю, що дозволяє менеджерам управляти товарами, замовленнями та монтажами, створювати розсилки та координувати комунікацію між усіма користувачами системи.
Дизайн інтернет-магазину й адмінпанелі
UX/UI дизайн публічної частини сайту
Дизайн інтернет-магазину C&H побудований на принципах мінімалізму та функціональності. Біло-синя колірна схема відповідає корпоративному стилю бренду, де акцентний синій використовується для кнопок, активних станів і решти важливих елементів.
Каталог обладнання звертає на себе додаткову увагу за допомогою ховер-анімації. Наведення курсора викликає складне багаторівневе меню та підсвічує його завдяки контрастному затемненню решти інтерфейсу. Такий інтерактивний прийом створює візуальну ієрархію, покращуючи навігацію каталогом і юзабіліті сайту загалом.
Особистий кабінет користувача
Особистий кабінет покупця має класичну структуру з історією замовлень, списком вибраних товарів, повідомленнями та зверненнями.
Система керування замовленнями в особистому кабінеті монтажника побудована навколо календаря з візуалізацією запланованих робіт. Кожен наряд завершується затвердженням роботи від клієнта за допомогою SMS-повідомлення.
Обліковий запис монтажника — це місце, де зберігаються не лише плановані виїзди, а й будівельні ліцензії. Тут також можна спілкуватися в чаті з клієнтами та відстежувати власний рейтинг за відгуками.
Профіль користувача зберігає всю необхідну для партнерства інформацію: реєстраційні дані проєктантів, історії співпраці з дилерами та рівні сертифікації монтажників.
Верстка сайту інтернет-магазину
Основний стек для створення сайту інтернет-магазину
Клієнтська частина інтернет-магазину побудована на Nuxt 3 — сучасному фреймворку з підтримкою серверного рендерингу (SSR), який впливає на швидкість завантаження каталогу з сотнями товарів, і своєю чергою — на SEO-оптимізацію сайту.
Фреймворк Vue 3 став основою для створення інтерактивного інтерфейсу, а Composition API забезпечив чистоту та спростив підтримку коду.
Для надійності та масштабованості сайту ми застосували TypeScript. Це надмножина JavaScript, що забезпечує статичну типізацію та безпечний рефакторинг коду, мінімізуючи помилки ще під час розробки, а не виконання програми.
Адаптивна верстка та користувацький досвід
Розмітка сторінок виконана мовою HTML5 із дотриманням усіх семантичних стандартів, які забезпечують якісну індексацію та коректне відображення сайту на будь-яких пристроях.
Усі стилі сторінок організовані за допомогою мови CSS і препроцесора SCSS. Модульна структура з окремими файлами для змінних, міксинів і компонентів дозволяє легко підтримувати стиль і в разі потреби кастомізувати дизайн інтерфейсу.
Плагін Vue-screen автоматично відстежує розмір екрана й адаптує інтерфейс інтернет-магазину під поточний пристрій. Так, у мобільній версії сайту меню переміщується вниз, товари перегруповуються у дві колонки, а бічна панель із фільтрами ховається за кнопкою.
До речі, довгі списки численних фільтрів оснащені кастомними скролбарами. Реалізовані за допомогою плагіна Simplebar-vue, вони повністю відповідають фірмовому дизайну магазину.
Завдяки цій бібліотеці також реалізовано календар монтажника, що підтримує вибір діапазону дат і блокує недоступні дні для сервісних виїздів.
Стан програми та збереження даних
За управління станом онлайн-магазину відповідає бібліотека Pinia, яка допомагає централізовано керувати даними — користувачами, замовленнями, фільтрами тощо. Плагін Pinia Persisted State дозволяє зберігати дані між сесіями, наприклад, токени авторизації чи вибрану мову інтерфейсу.
Валідація форм на сайті
Бібліотека VeeValidate забезпечує валідацію всіх форм на сайті з підтримкою мультимовності. Реєстрація користувачів, оформлення замовлення, заявка на монтаж — кожна форма має багаторівневу перевірку даних з миттєвим зворотним зв’язком під час введення.
Для парсингу та перевірки телефонних номерів у різних форматах використовується бібліотека libphonenumber-js.
Комунікація та API
Коли користувач додає товар у кошик або ж оформлює замовлення, сайт інтернет-магазину надсилає цю інформацію на сервер і отримує миттєву відповідь. Це можливо завдяки кастомному хуку useFetch, який окрім обміну даними захищає персональну інформацію користувачів, обробляє помилки мережі та показує індикатори завантаження. SSR-сумісність інструменту забезпечує правильну індексацію сторінок у пошукових системах.
Миттєве оновлення інформації без перезавантаження сторінки можливе завдяки технології WebSocket. Вона дозволяє обмінюватися повідомленнями з клієнтами та монтажниками через чат інтернет-магазину. Система також використовує WebSocket для оновлення статусів замовлень і монтажів у реальному часі.
Якість коду та стандарти
Перед запуском інтернет-магазину код пройшов автоматичну перевірку через ESLint — інструмент, який гарантує нульову толерантність до синтаксичних помилок, відсутність вразливостей безпеки та дотримання єдиного стилю коду.
У поєднанні з інструментом автоматичного форматування коду Prettier ми привели проєкт до єдиного стандарту, що дозволяє легко розширювати функціонал інтернет-магазину в майбутньому.
Розробка інтерфейсу адмінпанелі
Архітектура адміністративного інтерфейсу
Адмінпанель інтернет-магазину Cooper&Hunter теж побудована на базі фреймворку Nuxt 3, але тепер у режимі SPA (single page application). Така архітектура оптимальна для закритого інтерфейсу, де швидкість роботи важливіша за SEO-оптимізацію. Панель працює як односторінковий застосунок з миттєвими переходами між розділами без перезавантаження браузера, а Vue 3 з Composition API забезпечує модульну структуру компонентів — з таблицями товарів, формами редагування, модальними вікнами тощо.
Робота з даними та файлами
Vuefinder реалізує повноцінний файловий менеджер адмінки з drag-and-drop інтерфейсом. Адміністратори використовують його для масового завантаження CSV-файлів з характеристиками товарів.
Бібліотека SheetJS використана в проєкті для взаємодії з Excel-таблицями в обох напрямках. Імпорт даних дозволяє оновити каталог з сотнями товарів за секунди, тоді як експорт — вивантажити звіти з продажів або монтажів у зручному форматі.
Сповіщення в реальному часі
Бібліотека Socket.IO забезпечує двосторонній зв’язок між клієнтом і сервером у реальному часі. Адміністратори бачать сповіщення про важливі події й оновлення без перезавантаження сторінки — нові замовлення, реєстрації монтажників або зміни статусів.
Візуальні компоненти та стилізація
Бібліотека Floating UI керує всіма спливними елементами — підказками, контекстними меню, модальними вікнами та випадними списками.
Зручну пагінацію таблиць з великим обсягом даних забезпечує бібліотека Vue Awesome Paginate за допомогою нумерації та навігаційних кнопок.
Застосувати фірмові кольори в дизайні інтерфейсу через color picker допомогла npm-бібліотека Vue-color-kit.
Бібліотека simplebar-vue створює кастомні скролбари відповідно до дизайну, а модуль nuxt-icon забезпечує єдину систему іконок, оптимізовану для Nuxt.
Препроцесор SASS (SCSS) організує стилі в модульну систему зі змінними (кольори, відступи, шрифти) та міксинами, що дозволяє швидко адаптувати інтерфейс під фірмовий стиль.
Валідація даних у формах
Бібліотека VeeValidate у зв’язці з конструктором схем Yup створює потужну систему валідації даних. Email-адреси, телефонні номери та паролі перевіряються автоматично під час спроби входу в адмінку.
Компонент Vue datepicker з підтримкою локалізації дозволяє вибрати дати для планування монтажів, визначення періоду співпраці та терміну дії сертифікатів.
Робота з серверними запитами
Для спрощення роботи з API ми створили кастомну обгортку useFetch над стандартним Nuxt. Вона автоматично обробляє авторизацію, серверні помилки та клієнтські запити.
Бібліотека QS виконує серіалізацію та парсинг складних параметрів URL-запитів. Наприклад, коли адміністратор фільтрує товари за десятками характеристик одночасно, система коректно форматує всі дані для API та розбирає відповіді сервера для відображення в інтерфейсі.
Інструменти автоматизації та контролю якості розробки
Статичну типізацію коду адмінки в комбінації з плагіном @typescript-eslint забезпечує TypeScript, а єдиний стиль підтримують ESLint і Prettier. Stylelint з конфігураціями Standard SCSS і Recess Order забезпечує правильну структуру стилів ще на етапі написання проєкту.
Також адмінпанель використовує набір перевірених бібліотек, які автоматизують рутинні операції:
- Lodash надає готові функції для роботи з даними (масивами, об’єктами та рядками): сортування таблиць, фільтрація списків і пошук товарів працюють швидко через оптимізовані алгоритми.
- @vueuse/core та @vueuse/nuxt надають готові функції для типових задач програмування: відстеження розміру екрана, робота з локальним сховищем і керування клавіатурними скорочуваннями.
Для швидкої розробки та моніторингу продуктивності ми додатково застосували:
- @nuxt/devtools — панель відладки Nuxt-застосунку в реальному часі: з інспекцією компонентів, аналізом продуктивності та моніторингом API-запитів.
- @nuxt/image — модуль для автоматичної оптимізації зображень, який генерує адаптивні розміри під різні пристрої, конвертує в формати WebP/AVIF і застосовує lazy-loading у міру скролінгу сторінки.
- PostCSS — інструмент, який обробляє CSS через плагіни для кросбраузерності (Autoprefixer), мінімізації (cssnano) та очищення (PurgeCSS) коду від невикористаних стилів.
- Yarn 4 — менеджер пакетів з Plug’n’Play для стабільної збірки та швидкого встановлення залежностей у великих JavaScript-проєктах, як от онлайн-магазин Cooper&Hunter.
Бекенд розробка сайту на Laravel
Архітектура системи
Серверна частина побудована на PHP-фреймворку Laravel 10 з використанням PostgreSQL як основної бази даних. Архітектура застосунку розділена на модулі, як от авторизація, адмінка, онлайн-чат, Telegram-бот, push-сповіщення, завантаження файлів, пошук та збереження адрес, а також API для вебу та мобільних.
Платформа Docker забезпечує ізольоване середовище розробки та розгортання програми. Кожен сервіс — вебсервер, база даних і черги завдань — працює в окремому контейнері з налаштованою мережевою взаємодією.
Обробка файлів
Пакет pion/laravel-chunk-upload дозволяє завантажувати багато файлів частинами — фотозвіти в онлайн-чаті, специфікації обладнання чи гарантійні талони в особистому кабінеті користувача. У разі збою з’єднання (наприклад, через нестабільний інтернет), система зберігає вже завантажені файли та дозволяє продовжити процес без втрати прогресу.
Пакет maatwebsite/excel (тепер відомий як Laravel Excel) обробляє Excel-файли для масового імпорту й експорту даних. Адміністратори можуть оновити весь каталог через завантаження таблиці з сотнями товарів або вивантажити звіти з продажів у зручному форматі.
Комунікація в реальному часі
WebSockets на Node.js забезпечують роботу чату між монтажниками та клієнтами. Кожне звернення має окрему кімнату чату з історією повідомлень і можливістю надсилання зображень.
Firebase Cloud Messaging відповідає за push-сповіщення в мобільних додатках. Монтажники отримують повідомлення про нові заявки, клієнти — про зміну статусу замовлення.
Сторонні інтеграції
Український картографічний сервіс Visicom API забезпечує пошук і нормалізацію адрес під час створення нарядів на монтаж, щоб уникнути дублювання записів.
Для створення Telegram-боту ми застосували набір інструментів irazasyed/telegram-bot-sdk, а для сповіщень про нові замовлення та монтажі інтегрували Telegram Bot API. Менеджери магазину можуть отримувати повідомлення й обробляти замовлення прямо в Telegram без необхідності входу в адмінпанель.
Інтеграція з українським сервісом TurboSMS дозволяє надсилати підтвердження на мобільний у разі реєстрації чи зміни статусу замовлення.
Результати створення інтернет-магазину на Laravel
Cooper&Hunter отримав не просто мультимовний інтернет-магазин на Laravel, а повноцінну екосистему для управління бізнесом. Платформа об’єднала понад 500 товарів, тисячі покупців, а також сотні дилерів і монтажників. Серед ключових досягнень проєкту: реалізація особистих кабінетів, онлайн-чат підтримки та кастомна адмінпанель.
Створення адміністративної частини сайту на Laravel дає змогу менеджерам масово імпортувати/експорувати товари, легко керувати контентом через візуальний конструктор сторінок, а також автоматизувати бізнес-процеси — від обробки замовлення до створення наряду на монтаж. Інтеграція сайту з Telegram-ботом додатково спрощує роботу менеджерів онлайн-магазину.
До того ж інтернет-магазин Cooper&Hunter зможе легко адаптуватися під нові вимоги бізнесу. Модульна архітектура на Docker і PostgreSQL повністю готова до розширення функціоналу, зростання каталогу та високих навантажень у майбутньому.
Комментарии