01Context
What this was
Bagisto is an open-source Laravel ecommerce platform. The work focused on a common gap in real commerce teams: the backend can manage products, but the storefront still needs flexible presentation, richer product content, and buying pages that feel intentional.
02Problem
What was broken
Before
Storefront changes and promotional layouts typically required code changes, reviews, and deploys-even for small merchandising tweaks.
What had to change
Merchants needed layout control, product pages with stronger trust and variant signals, and a catalog workflow that could scale beyond manual editing.
- 01Weak separation between content, merchandising config, and deploy cadence
- 02Manual catalog enrichment that did not scale with SKU growth
- 03PDPs under-structured for materials, sizing, variants, and social proof
The objective was API-first template configuration, optional PIM synchronization, and PDP patterns closer to modern conversion-focused ecommerce.
03Solution
What I built
Headless-style configuration layer
Extended Bagisto’s GraphQL surface (Lighthouse) so storefront templates could be configured through validated structured data: palettes, density, hero placement, grid rules, and dynamic sections.
Dynamic storefront rendering
Built a React/Next.js registry that maps configuration to components with lazy loading, Suspense boundaries, and validation before production.
UnoPIM to Bagisto sync
Implemented queue-based imports with batching, attribute mapping, merge rules, and per-product error isolation so catalog enrichment did not depend on hand edits alone.
04Decisions
Key implementation decisions
- 01
JSON template config vs fully normalized tables
Chose structured JSON for rapid iteration and fewer migrations; configs are read-heavy and validated on write.
- 02
GraphQL schema boundaries
Fragments and depth limits to avoid over-fetching; nested inputs validated to match what the renderer expects.
- 03
Idempotent PIM identity
External IDs as source of truth with versioning/locking strategy to reduce duplicate products and race conditions.
- 04
PDP information architecture
Structured attributes, variant logic, and sizing/supporting content surfaced for scan-friendly trust and fewer returns.
05Impact
Operational impact
- Merchandising and marketing can iterate template-level presentation without a full redeploy cycle for every tweak.
- PIM-backed enrichment reduces time spent hand-editing large catalogs in the core alone.
- Support and sales see clearer PDP structure-fewer ambiguous variant states and clearer proof points.
06Results
Results
- 25+ configurable storefront templates driven from configuration, not forked codebases.
- Stronger PDP structure for materials, variants, and supporting content.
- Scalable catalog operations via UnoPIM integration with resilient batch processing.
- Foundation for future A/B style experiments on layout blocks.
07Stack
Technology stack
- Backend
- PHP 8.1+, Laravel 10, GraphQL (Lighthouse), MySQL
- Frontend
- TypeScript, React 18, Next.js 14, Apollo Client
- Integration
- UnoPIM (REST sync layer)
- Focus
- Ecommerce extensibility, conversion-oriented UX
