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.
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
What changed.
Numbers from the live store after the work was shipped — measured against pre-existing baselines, never theoretical.