Коротко про проєкт
Наш клієнт – ексклюзивний постачальник бігового взуття та товарів для плавання в Україні, хотів забезпечити своїм покупцям безперебійний сервіс онлайн і офлайн.
Але підтримувати стабільну роботу ставало все складніше: нестабільний Інтернет, відключення електрики та збої сторонніх систем часто заважали касирам ефективно обслуговувати клієнтів. Щоб продажі йшли без перерв, потрібне було надійне рішення – десктопний застосунок, який працював би в онлайн і офлайн режимах.
Виклик
Основною бізнес-ціллю було уніфікувати та модернізувати роботу кас у всіх роздрібних магазинах. Клієнт хотів отримати MVP-рішення за три місяці, яке мало б:
- Підтримувати понад 30 магазинів по всій країні
- Працювати як онлайн, так і офлайн
- Інтегруватися з наявною платформою лояльності клієнта (“Лояльно”) та іншими системами лояльності
- Працювати незалежно від центральної ERP-системи під час офлайн-режиму
- Підтримувати бонусні програми, акції та знижки компанії
- Служити основою для майбутньої CRM, збираючи дані покупців прямо на касі
- Скоротити час обслуговування клієнтів і усунути дорогі помилки ціноутворення, які виникали в старій системі
З технічного боку команда WebbyLab мала вирішити такі задачі:
- Інтуїтивний інтерфейс. Інтерфейс потрібно було зробити достатньо простим, щоб касири могли працювати без тривалої адаптації, але водночас достатньо функціональним для управління замовленнями, оплатами та логікою лояльності.
- Офлайн-режим. Застосунок мав бездоганно працювати без Інтернету, використовуючи надійну локальну базу даних – включно з обробкою замовлень та розрахунком знижок.
- Інтеграція та синхронізація з ERP. Дані повинні були залишатися узгодженими між касою та ERP навіть при нестабільному з’єднанні. Тому ми розробили механізми двосторонньої синхронізації.
- Фіскальна звітність. Система потребувала інтеграції з Checkbox.Kasa.Manager для створення фіскальних чеків, управління змінами та формування Z-звітів, при цьому не збільшуючи навантаження на застосунок.
- Оплати через POS-термінал. Для безготівкових платежів і швидкої, стабільної обробки транзакцій ми інтегрували застосунок із PayLink POS Server, забезпечивши роботу в реальному часі.
- Інтеграція із системою лояльності. Каса мала працювати в реальному часі, щоб правильно нараховувати бонуси, застосовувати знижки та акції навіть без Інтернету.
Рішення
Вивчивши всі вимоги та можливі ризики, ми запропонували створити систему каси на базі Electron.js із локальним зберіганням даних у SQLite. Наше рішення охоплювало:
Монолітна архітектура та автоматичні оновлення
Ми створили застосунок на монолітній архітектурі з централізованим репозиторієм коду. Це спростило розгортання та підтримку, оскільки всі компоненти системи (від фронтенду та бекенду до інтеграцій) зберігаються в одному місці. Щоб полегшити оновлення, ми реалізували Electron Release Server, який автоматично перевіряє наявність нових версій застосунку та дозволяє оновлювати його в один клік прямо з інтерфейсу програми.
Архітектура додатку для каси роздрібної торгівлі.
Стабільна комунікація між процесами
Для забезпечення стабільної взаємодії ми використали міжпроцесну комунікацію (IPC). Це розділило бізнес-логіку (бекенд-процес на Node.js) та користувацький інтерфейс (render process). В результаті IPC забезпечило швидкий і надійний обмін даними між двома процесами.
Офлайн-функціональність та синхронізація
Пріоритетом була стабільна робота в офлайн-режимі. Ми використали Electron.js для створення офлайн-застосунку з можливістю кросплатформеного розгортання. Також ми розробили механізм локального кешування та синхронізації за допомогою SQLite.
Інтеграції системи
Щоб касири могли працювати зручно та без перерв, WebbyLab інтегрували кілька зовнішніх систем:
- ERP система. Синхронізує дані про товари, співробітників, замовлення та магазини між касою та центральною ERP у режимі реального часу. Коли інтернет відсутній, вся інформація зберігається локально в SQLite, а після відновлення з’єднання планувальник автоматично передає та узгоджує транзакції з ERP кожні п’ять хвилин.
- Checkbox.Kasa.Manager. Відповідає за фіскалізацію чеків, Z-звіти та можливість відкривати й закривати зміни касирів прямо з програми.
- PayLink POS Server. Дозволяє безготівкові оплати через термінал. Розроблений нами кастомний API забезпечує стабільну комунікацію між застосунком і платіжними терміналами з мінімальною затримкою.
- Лояльно. Підтримує програми лояльності клієнта, включаючи знижки, бонуси та акції, а також маркетингові активності.
- Нова Пошта. Автоматизує створення та відстеження замовлень на доставку.
Результат
Десктопний застосунок від WebbyLab допоміг уніфікувати та оптимізувати роботу касирів у більш ніж 30 магазинах клієнта. Тепер касири працюють з єдиним стабільним інструментом для продажів, незалежно від того, чи Інтернет швидкий, повільний або зовсім відсутній.