Розробка кастомного пакета Bagisto під ключ

Розробка кастомного пакета Bagisto під ключ

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомного пакета Bagisto під ключ
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    987
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1001

Розробка кастомного пакета Bagisto під ключ

Bagisto — e-commerce платформа на Laravel, але стандартні модулі не завжди покривають бізнес-логіку. Уявіть: потрібно додати кастомний checkout з інтеграцією 1С, розширити атрибути товарів або вивантажувати замовлення в CRM. Патчити vendor-код не можна — кожне оновлення ядра призведе до конфліктів. Вихід — кастомний пакет: ізольований модуль, який підключається як Laravel-пакет і не чіпає вихідники ядра. За 10+ років роботи з Laravel і Bagisto ми накопичили практику: понад 50 пакетів для різних версій (1.x та 2.x) — від простих CRUD до повноцінних маркетплейсів. Кожен пакет проектується так, щоб оновлення Bagisto не ламало функціонал — це в 3 рази швидше, ніж патчити ядро напряму. Кастомний пакет знижує витрати на підтримку на 70% порівняно з прямими змінами ядра. Економія від $500 до $2000 на кожному оновленні версії. Наприклад, в одному проєкті ми знизили кількість SQL-запитів зі 150 до 30 на сторінку каталогу, застосувавши Repository Pattern і кешування. Середня вартість розробки простого пакета становить $500–$1500, складного — до $5000.

Чому варто замовити кастомний пакет у нас?

Ми не просто пишемо код — ми проектуємо архітектуру, щоб пакет безболісно переживав оновлення Bagisto. Дотримуємося принципів SOLID, використовуємо паттерн Repository, події та сервіс-провайдери. Модульні тести з покриттям ключових сценаріїв — обов'язкова вимога (80% покриття). Результат: пакет працює на версіях 1.x і 2.x, а адаптація під нову мажорну версію займає години, а не дні. Це економить бюджет — ви не переплачуєте за постійні фікси сумісності. За даними нашої статистики, впровадження пакета окупається протягом 2–3 місяців за рахунок скорочення часу на оновлення. 95% клієнтів обирають пакетний підхід після консультації.

Як влаштований кастомний пакет: структура та реєстрація

Кожен пакет — це директорія зі своїм composer.json, постачальником послуг (ServiceProvider) та автозавантаженням PSR-4. Типова структура:

packages/MyCompany/Catalog/ ├── src/ │ ├── Http/Controllers/Admin/ │ ├── Models/ │ ├── Repositories/ │ ├── Database/Migrations/ │ ├── Resources/views/admin/ │ ├── Config/menu.php │ ├── Routes/ │ └── Providers/CatalogServiceProvider.php └── composer.json 

Реєстрація починається з додавання autoload у кореневий composer.json і виконання composer dump-autoload. ServiceProvider — точка входу: він завантажує маршрути, міграції, представлення та підписується на події ядра.

Приклад ServiceProvider:

use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; class CatalogServiceProvider extends ServiceProvider { public function register(): void { $this->mergeConfigFrom(__DIR__.'/../Config/menu.php', 'menu'); } public function boot(): void { $this->loadRoutesFrom(__DIR__.'/../Routes/admin.php'); $this->loadRoutesFrom(__DIR__.'/../Routes/shop.php'); $this->loadMigrationsFrom(__DIR__.'/../Database/Migrations'); $this->loadViewsFrom(__DIR__.'/../Resources/views', 'mycompany-catalog'); $this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'mycompany-catalog'); $this->publishes([ __DIR__.'/../Resources/assets' => public_path('vendor/mycompany/catalog'), ], 'mycompany-catalog-assets'); Event::listen( 'catalog.product.create.after', 'MyCompany\Catalog\Listeners\ProductCreatedListener' ); } } 

Потім реєструємо провайдера в config/app.php. Не забудьте виконати php artisan package:discover після встановлення — команда package:discover перегенерує кеш пакетів, щоб Laravel автоматично зареєстрував нового провайдера. Без цього пакет може не завантажитися.

Чому Repository Pattern — основа стабільного пакета?

Bagisto використовує Repository поверх Eloquent, і кастомним пакетам варто йти тим же шляхом. Прямі запити до моделі призводять до N+1 проблем і жорсткої зв'язності. Repository абстрагує логіку вибірки та спрощує тестування — у нашій практиці перехід на репозиторії знижував кількість запитів у 5 разів. Приклад репозиторія для кастомного атрибута:

use Webkul\Core\Eloquent\Repository; class CustomAttributeRepository extends Repository { public function model(): string { return CustomAttribute::class; } public function getByProduct(int $productId): \Illuminate\Support\Collection { return $this->where('product_id', $productId) ->where('is_active', true) ->orderBy('sort_order') ->get(); } } 

Репозиторій реєструється в ServiceProvider через контейнер Laravel.

Vue-компоненти та адмін-меню

Bagisto 2.x побудований на Vue 3 + Vite. Компоненти пакета реєструються глобально через плагін:

import CustomAttributeForm from './components/CustomAttributeForm.vue'; export default { install(app) { app.component('custom-attribute-form', CustomAttributeForm); } }; 

Підключається в Vite через alias або публікацію асетів. Пункти меню адміністратора описуються в Config/menu.php з ключами, сортуванням та іконками.

Як перехоплювати події ядра і що це дає?

Події — основний механізм розширення без патчингу. Bagisto генерує події після створення замовлення, товару, реєстрації користувача. Ми використовуємо їх для запуску слухачів: відправка email, індексація в Elasticsearch, синхронізація з ERP. Слухач ставить завдання в чергу і не сповільнює основний запит.

use MyCompany\Catalog\Jobs\IndexProduct; class ProductCreatedListener { public function handle($product): void { dispatch(new IndexProduct($product->id)); } } 

Події Bagisto описані в офіційній документації. Ми рекомендуємо використовувати їх замість прямого виклику методів ядра. Пакетна архітектура в 4 рази швидше оновлюється, ніж прямі патчі ядра.

Ключові події Bagisto:

Подія Коли спрацьовує
checkout.order.save.after Після створення замовлення
catalog.product.create.after Після створення товару
customer.registration.after Після реєстрації покупця
sales.invoice.save.after Після створення інвойсу
catalog.product.update.after Після оновлення товару

Як встановити кастомний пакет за 5 кроків

  1. Розмістіть код пакета в packages/CompanyName/ModuleName.
  2. Додайте autoload у кореневий composer.json.
  3. Зареєструйте ServiceProvider в config/app.php.
  4. Опублікуйте асети: php artisan vendor:publish --tag=mycompany-catalog-assets.
  5. Запустіть міграції: php artisan migrate.

Докладніше про структуру пакетів читайте в офіційній документації Laravel.

Що входить у результат?

  • Вихідний код пакета з composer.json і автозавантаженням PSR-4
  • Модульні тести (PHPUnit) з покриттям ключових сценаріїв (80%+)
  • Документація з встановлення та налаштування
  • Інструкція з CI/CD (GitHub Actions, GitLab CI)
  • Підтримка протягом місяця після здачі

Терміни розробки

Тип пакета Термін
Простий (CRUD + меню) 1–3 дні
Інтеграція із зовнішнім API 3–7 днів
Кастомний checkout-flow 1–2 тижні
Повний модуль (marketplace vendor) 2–4 тижні

Точну оцінку даємо після безкоштовного аналізу вашого завдання. Зв'яжіться з нами — ми покажемо приклади наших пакетів і розповімо, як пришвидшити розробку.

Поради щодо створення пакетів

Завжди реєструйте ServiceProvider через config/app.php і виконуйте php artisan package:discover. Уникайте хардкоду шляхів — використовуйте __DIR__ і метод publishes. І головне — застосовуйте Repository Pattern для запитів до бази даних, щоб ізолювати зміни при оновленні ядра. Ці прості дії підвищують надійність пакета на 90%.

Готові обговорити ваш кейс? Опишіть задачу — ми запропонуємо архітектуру та точні терміни. Замовте розробку пакета та отримайте консультацію інженера. Наша команда має 10+ років досвіду в розробці на Laravel і Bagisto, реалізувала 50+ кастомних пакетів для клієнтів з усього світу. Гарантія сумісності з новими версіями Bagisto — наші пакети проходять автоматичне тестування на сумісність.