Sklep online Świeży projekt

KNOBS.PL - migracja Shoper -> WooCommerce z konfiguratorem 3D i własnym PIM

E-commerce / Uchwyty meblowe / Wyposażenie wnętrz (B2B+B2C)

Migracja sklepu uchwytów meblowych z Shopera na WooCommerce - 6157 produktów, 4325/4325 przekierowań 301 bez utraty pozycji Google, własny block theme FSE, konfigurator 3D VECTIS (Three.js + Blender), osobny PIM w FastAPI, 127 stron programmatic SEO z Bielikiem lokalnie, ~30 własnych wtyczek pod konkretne potrzeby biznesu.

O projekcie

KNOBS.PL to sklep uchwytów, gałek i akcesoriów meblowych - 11 marek (Formani, Viefe, Beslag, Buster+Punch, Corston, Furnipart, VECTIS, NU, Avolt, Dimplex, Fontini), 6157 produktów, główne źródło leadów to ruch organiczny Piotra (SEO). Powód migracji z Shopera: brak elastyczności. Na Shoperze programmatic SEO, custom filtry, konfigurator 3D, integracja z PIM i własny lejek RFQ dla mebli VECTIS albo w ogóle się nie da, albo trzeba hakować pluginy SASS-owe. Zbudowaliśmy własny block theme FSE + około 30 własnych wtyczek pod konkretne potrzeby biznesu + osobny PIM w FastAPI. Live od 2026-07-24. Audit modelem Fable, poprawki Opusem.

“Duża migracja z Shopera na WooCommerce - własny motyw + 30 wtyczek + konfigurator 3D + programmatic SEO + PIM.”

Wyzwanie

Sklep aktywnie sprzedaje, Piotr włożył lata pracy w SEO - kluczowe URL-e mają być zachowane 1:1, nie tylko przekierowane 301. 11 marek producentów, każda z własnym GPSR compliance. Formani ma 4682 warianty w 752 modelach. VECTIS to konfigurowalny system modułowy (90 konfiguracji, swap wykończeń) wymagający wizualizacji 3D w przeglądarce. Klasyczne filtry WC Product Collection ładowały się 3-12s, native attribute filters kłamały liczniki (globalne zamiast per archiwum marki). Płatności: Piotr chce Autopay zamiast Przelewy24. Dostawa: InPost paczkomaty + kurier do punktu + osobisty w showroomie. Compliance: GPSR, RODO, Consent Mode v2, zwroty online, faktura na firmę z walidacją NIP. Sklep z ruchem = cel botów, potrzeba hardeningu bezpieczeństwa. Cały development lokalnie w Dockerze - import 6157 produktów bez ryzyka dla produkcji.

Rozwiązanie

Import 6157 produktów przez własny pipeline (CSV + scraper + importer PHP): 4422 publish, 1735 draft, warianty grupowane po osi Kolor. Struktura URL-i kanoniczna (/produkt/, /kategoria/, /marka/), stare Shoperowe robią 301 na czyste - 4325/4325 zmapowane bez straty. Własny block theme FSE, około 30 mu-pluginów pod konkretne potrzeby (filtry, GPSR, RFQ, PIM sync, programmatic SEO, security, checkout tweaks). Development izolowany w Dockerze, deploy na Mikrus VPS z tuningiem serwera. Szczegóły integracji w blokach poniżej.

Co pod maską

Migracja

6157 produktów Shoper → Woo bez utraty SEO

Własny pipeline (CSV + scraper zdjęć + importer PHP). Warianty koloru/wykończenia grupowane w produkty wariantowe. 4325/4325 kanonicznych URL-i Piotra zmapowane 301 na czyste ścieżki (/produkt/, /kategoria/, /marka/) - stare Shoperowe (+/pl/) nadal łapane. Zero utraconych pozycji Google przy cutoverze.

3D

Konfigurator VECTIS w przeglądarce

Osobny plugin Three.js: 90 konfiguracji, swap wykończeń przez shader mapping, GLB z Draco compression, modele STL na uploads/vectis-3d (poza gitem). Wkłady gniazd (USB, RJ45, HDMI, TV, audio) zamodelowane od zera w Blenderze przez blender-mcp - licują z modułami VECTIS. Konwerter oferta→PDF/koszyk podpięty do konfiguratora.

AI

Programmatic SEO z Bielikiem lokalnie

127 stron typu /czarne-matowe-uchwyty-meblowe/ generowanych przez knobs-programmatic.php: kombinacje kolor + kształt + pomieszczenie + styl. Płaskie URL-e, self-canonical, AI intro z Claude, sitemap w Yoast. Bielik puszczany na lokalnym PC (nie serwer), gap analysis z Senuto. Pokrycie długiego ogona bez płacenia za content.

PIM

Osobny PIM w FastAPI+SQLite jako mirror sklepu

5560 produktów, 35k atrybutów. Piotr edytuje w PIM, sklep jest źródłem prawdy, sync w drugą stronę (zdjęcia, atrybuty) w 6 workerach paralelnie z rollback tsv per uruchomienie. Zsynchronizowane: 2083 produkty zdjęć + 2529 prostych + 37 wariantowych atrybutów. Kandydat na osobną wtyczkę Woo w przyszłości.

Perf

Filtry AJAX 0.6s vs 3-12s natywnych

Product Collection przełączony na Classic Template block (0.6s vs 3-12s), plus własny knobs-filters.php AJAX. Fix kłamiących liczników: resolver archiwum z Referera w rest_pre_dispatch łapie Store API /wc/store/v1/products/collection-data, rozwiązuje URL na taxonomy+term_id, pre_get_posts zawęża wszystkie WP_Query - Avolt kolor Czarny mat pokazywał globalne 179, teraz zero (blok koloru sam znika).

Analityka

GTM + GA4 z pełnym trackingiem e-commerce

Kontener Piotra osadzony przez mu-plugin knobs-gtm.php (head + body noscript), dataLayer e-commerce z eventami view_item (produkt, brand + category), add_to_cart (JS + nasłuch wc-blocks_added_to_cart), begin_checkout (cart items), purchase (woocommerce_thankyou z transaction_id, value/tax/shipping). Wyłączony poprzedni Site Kit żeby nie dublować. Consent Mode v2 spięty z Pressidium Cookie Consent.

Dostawa

Apaczka: paczkomaty + kurier + osobisty w Gdańsku

Wtyczki apaczka-pl + geowidget, klucze API w opcjach. Mu-plugin knobs-apaczka.php: patch Node.prototype.removeChild (bug vendora w Block Checkout), MutationObserver TYLKO na .wp-block-woocommerce-checkout (nigdy body - infinite loop). Geowidget button pokazuje się pod paczkomatem/kurierem do punktu, przy odbiorze osobistym renderujemy złotą ramkę showroomu (ul. Piastowska 32/2, Gdańsk).

Płatności

Autopay + faktura na firmę z walidacją NIP

Autopay zamiast Przelewy24 (decyzja Piotra), ServiceID 218652, klucz w DB do rotacji, ITN URL skonfigurowany. Faktura na firmę przez WC Additional Checkout Fields API (WC 10.9): checkbox 'Chcę fakturę' + pola NIP/nazwa firmy w grupie order, hide/show w Block Checkout (React + delegacja + MutationObserver), walidacja z sumą kontrolną NIP w woocommerce_blocks_validate_location_order_fields.

Zwroty

WPNest Returns branded pod markę

Przycisk 'Zwróć' w Moje konto (woocommerce_my_account_my_orders_actions), wizard 3-krokowy /zwroty-online/?order=ID, wbudowany PDF wzoru odstąpienia PL/EN (załącznik 2 ustawy o prawach konsumenta). Config: button_label='Zwróć', merchant_email=kontakt@knobs.pl. Ostylowana na kolory marki (CSS .wpnestreturns-app ink/brass zamiast domyślnego blue).

Compliance

GPSR per marka + strona odstąpienia

GPSR (Rozporządzenie UE 2023/988): realny adres rejestrowy producenta per marka, oznaczenia bezpieczeństwa, logotypy marek w zakładce karty produktu (własny knobs-gpsr-producers). Strona /odstapienie-od-umowy/ z formularzem załącznika 2 ustawy o prawach konsumenta + link w stopce. Cookie consent Pressidium 1.11.3 z pełnym PL i rozsądnymi GDPR defaults.

Security

Hardening + monitoring IOC

knobs-security.php: anty-enumeracja loginów (blok author=N w URL), rotacja kont admin. Turnstile na wp-login + WooCommerce (klucze w wp-config, nie DB). Cloudflare WAF: blok Rosji, blok śmieciowych crawlerów (Google/Bing/AI zachowane). Cron codzienny IOC (build/security-scan.sh) na VPS: skanuje malware, alert mailem gdy coś wykryje. wp core + plugin verify-checksums OK.

DevOps

Docker dev + Mikrus VPS + quality stack

Development w Dockerze: WP 7.0.2 + MariaDB 11 + WP-CLI + adminer, izolowane środowisko z bind-mountami na motyw/uploads/build. Deploy na Mikrus VPS z tuningiem: php-fpm 16 workerów + terminate timeout, MariaDB 512M, backupy (były zero!), ownership cron, nginx wp-login limit + xmlrpc block. Quality gate: PHPCS + PHPStan + ESLint + Stylelint + husky pre-commit. Composer zablokowany SSL - obejście przez git submodules.

Efekty i cechy

  • 6157 produktów zaimportowanych (4422 publish, 1735 draft) z zachowaniem osi wariantów Kolor
  • 4325/4325 kanonicznych URL-i SEO Piotra przeniesionych 1:1, stare Shoperowe 301 na czyste - zero utraconych pozycji Google przy migracji
  • Własny block theme FSE + około 30 mu-pluginów (żadnego premium motywu ani buildera - pełna kontrola nad wyglądem, wydajnością i integracjami)
  • Konfigurator 3D VECTIS w przeglądarce - Three.js, 90 konfiguracji, swap wykończeń, GLB z Draco, custom wkłady gniazd zamodelowane w Blenderze
  • 127 stron programmatic SEO (kolor + kształt + pomieszczenie + styl) generowanych z Bielika lokalnie - realne pokrycie długiego ogona bez płacenia za content
  • Osobny PIM w FastAPI+SQLite jako mirror sklepu (5560 prod, 35k atrybutów) - Piotr edytuje, my enrichujemy, sync zdjęć/atrybutów rebuildable
  • Filtry AJAX 0.6s vs 3-12s natywnych + fix kłamiących liczników (globalne -> per archiwum marki)
  • Konsolidacja 600 płaskich Formani -> 216 wariantowych + 600 redirectów 301 (mniejszy indeks Google, lepszy UX na karcie)
  • Apaczka end-to-end (InPost paczkomaty + kurier do punktu + osobisty odbiór), własny glue-code Block Checkout obchodzi bug vendora
  • Zwroty online przez WPNest Returns branded na kolory marki + PDF wzoru odstąpienia PL/EN
  • GTM + GA4 z pełnym trackingiem e-commerce (view_item / add_to_cart / begin_checkout / purchase) - Piotr dostaje real-time analitykę
  • Hardening bezpieczeństwa: anty-enumeracja, Turnstile na login + WC, blok Rosji CF WAF, cron IOC z alertem mailem - audyt czysty
  • Mobilny bottom bar 5 ikon + mega menu drill-down + branded pill 'MENU' - konwersja mobile-first
  • Ofertownik z konwerterem PDF dostawcy (VECTIS/ISD z rabatem 5%) - przyspiesza ofertowanie B2B, akceptacja prowadzi do koszyka
  • Mikrus VPS z tuningiem (php-fpm 16 workerów, MariaDB 512M, backupy z zera, nginx wp-login limit) - stabilny prod bez babysittingu
  • Development w Dockerze + PHPCS + PHPStan + ESLint + Stylelint + husky pre-commit - powtarzalne wdrożenia, zero regresji

Technologie

WordPress FSE (block theme)WooCommerce 10.9Własny motyw KNOBS (block theme + patterns)~30 własnych wtyczek/mu-pluginów (knobs-*.php)Three.js + STL/GLB (konfigurator 3D)Blender + blender-mcp (modelowanie wkładów gniazd)FastAPI + SQLite (osobny PIM, mirror sklepu)Bielik (lokalnie, normalizacja opisów)Docker Compose (dev, WP 7.0.2 + MariaDB 11 + WP-CLI)Apaczka (InPost + kurier do punktu, glue-code Block Checkout)Autopay (płatności)Yoast SEO + RedirectionPressidium Cookie Consent (własna paczka)WPNest Returns (zwroty PL/EN + PDF wzoru odstąpienia)DiviSmarterGallery (licencja per-domena, hero banner)GTM + GA4 (e-commerce events: view_item / add_to_cart / begin_checkout / purchase)Cloudflare WAF (blok Rosji + Turnstile na wp-login + WC)PHPCS + PHPStan + ESLint + Stylelint + husky pre-commitMikrus VPS (php-fpm 16 workerów, MariaDB 512M, nginx tuning, cron IOC)

Charakter wizualny: Skandynawski minimalizm, biel + akcenty brass. Uchwyty w centrum uwagi.