Back to case studies
Open Source
Jan 15, 202412 min read

Extending Bagisto for Better Storefront Control

Configurable storefront templates, richer PDPs, and PIM-backed catalog workflows on an open-source ecommerce core.

Author
Viktor Stoimenovski

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