Year
2025
Sector
Jewelry · Shopify App · Apzee Solutions
Role
E-commerce Solutions Lead · Full-stack engineer
Duration
Live · ongoing
Stack
Laravel 12 · PHP 8.2 ·…

Stuller’s Shopify Integration: CodeIgniter to Laravel

Transactional Stuller Showcase powered by GemFind. A Laravel 12 Shopify app for displaying and selling Stuller jewelry products directly in Shopify stores via an embedded showcase and app proxy.

Overview

Stuller has supported jewelry professionals for over 50 years. The existing Shopify integration was built on a legacy CodeIgniter codebase and had become difficult to maintain as product complexity, storefront demands, and Shopify platform expectations evolved. The challenge was not just to rewrite in Laravel, but to do it while preserving real merchant operations — live stores, ongoing billing, and existing access tokens all needed to remain intact during the migration.

What we shipped

  Re-implemented core logic in Laravel 12 services and controllers while keeping the merchant-facing flow stable.

  Standardized Shopify primitives via kyon147/laravel-shopify — OAuth, embedded auth, billing middleware, webhook lifecycle and ShopModel trait integration.

  Built a storefront pattern over Shopify App Proxy — HMAC signature validation, Liquid-compatible response that hosts the Stuller iframe, PostRobot events for add-to-cart.

  Orchestrated cart and product flow across three Stuller paths: simple, configurable and certified stones (diamond, lab-grown, gemstone) — fetch from Stuller API, apply stock/backorder logic, find variant by normalized SKU, update or create + publish, return cart URL with line-item properties.

  Preserved live shops, billing state and token continuity through package-aligned model conventions and explicit 401 detection / re-auth paths.

Stack & tags

Tools, standards, assumptions.

  • Laravel 12
  • PHP 8.2
  • kyon147/laravel-shopify
  • Shopify Admin GraphQL
  • App Proxy
  • Blade
  • PostRobot
  • iframe-resizer
  • MySQL
  • Laravel
  • Shopify App
  • Migration
  • Modernization
Results

What changed.

Numbers from the live store after the work was shipped — measured against pre-existing baselines, never theoretical.

0 Merchant disruption during migration
Live Stores and billing continuity preserved
Laravel 12 Clean service-layer architecture replacing CodeIgniter
Next case

Keeler USA — Magento 1 → Magento 2 upgrade

Open the next case