E-commerce library

Every e-commerce project at Pragma started from scratch: with no shared component foundation, each designer rebuilt the same things over and over. I designed an extension of Pragma's design system —focused on the Magento template— so any designer in the company could start from a ready, consistent base validated with development, instead of a blank page.

01 - Context

Starting point: auditing Magento before designing

Before designing, we had to understand the terrain. We benchmarked the reference platform —Magento— auditing the critical pages of the purchase flow: Home, PLP (Product List Page), PDP (Product Detail Page), cart, checkout with payment gateway, and the administration backoffice. While other UI teammates evaluated different platforms, my focus was mapping Magento's visual layer and its technical constraints.

Home — Magento template

PLP (Product List Page) — Magento template

PDP (Product Detail Page) — Magento template

Shopping cart — Magento template

Magento and the boundaries of design

Magento (Adobe Commerce) is an open-source e-commerce platform that defines from the backend how pages, components, and interactions are structured: PLP, PDP, cart, and checkout all have predefined template architectures built on a Less-based theme system, PHP blocks, modules, and layout XML. Design can't ignore those limits: whatever is proposed has to be implementable within what the platform renders natively. That's why every component, variant, and customization was reviewed with the Magento-expert development team before moving forward.

Continuous technical validation

Every component, variant, and customization was validated with the Magento-expert technical team. The priority: no design proposal should require development outside the sprint scope or compromise delivery timelines.

Design within platform constraints

Magento defines what can be rendered natively and what requires custom PHP modules. Understanding that boundary was essential to proposing components with real technical viability, not just visual appeal.

02 - System

From atom to template: layered design

With the benchmark as a foundation, I applied Atomic Design to build the library from its smallest units. Each atom —buttons, inputs, labels— was documented with variants, booleans, text options, and, where relevant, color variables. The goal was clear: no designer should have to detach a component to adapt it, because flexibility was already built in from the design.

Library overview — documentation of all components in Figma

Component customization

Each component was configured for maximum flexibility without leaving the system: variants for the different states, booleans to show or hide elements, and editable text. The idea was to cover, from the design itself, the usual reasons someone detaches —resizing or adding options the component doesn't contemplate—, so that editing content or toggling visibility never forced breaking the link with the library.

Card component customization in Figma — variants, instances, booleans and text options

Key components documented

The mini cart and the product card are the highest-frequency components in any e-commerce. I documented each one with all its variations, from the empty state to the multiple user interaction states.

Mini Cart component documentation

Product Card component documentation

03 - Pages

From components to full pages

The built atoms and molecules assemble into full-page templates. Home, PLP, PDP, cart, administration backoffice, and wishlist were designed as reusable Figma pages, all connected to Pragma's design system and ready to customize without starting from scratch. Anyone who picks up one of these pages can adjust color, typography, and content without detaching a single component.

Home in atomic design — Pragma ecommerce template

PLP in atomic design — Pragma ecommerce template

Shopping cart in atomic design — Pragma ecommerce template

PDP in atomic design — Pragma ecommerce template

Backoffice and wishlist page in atomic design — Pragma ecommerce template

04 - Result

Organic adoption across real projects

The library was adopted organically within Pragma. Designers who used it in real projects reported —qualitatively— starting with much of the work already solved, rather than from scratch. When someone detached a component for full editing freedom, they already had almost the whole path covered: a sign the library served its purpose as a starting point, not a constraint.

A faster start

Qualitative feedback from designers who adopted it in real projects: starting from a ready base made kickoff clearly more agile than designing from scratch.

No design from scratch

No designer who used the library had to build a base component again. All the visual groundwork was already solved.

05 - Conclusions

Lessons from this project

01
A well-built system multiplies team output

Designing for other designers means thinking about flexibility, not just aesthetics. Every boolean, variant, and variable saves real hours for whoever uses the component next.

02
Detach is a symptom of a poorly designed component

If someone needs to detach a component from the system to modify it, the problem is the component, not the designer. The goal was to anticipate all possible variations from the start.

03
The benchmark defines the real scope of the system

Understanding the base platform first —in this case Magento— was what allowed us to design truly useful components. Without that context, the components would have been generic.

This library is not just visual design; it's a work infrastructure. Building it requires thinking like whoever will use it —not like the person designing it for themselves—, and that shift in perspective is, in itself, a design competency that goes beyond components.

Other projects

LuiguiCalderin

© 2026, Luigui Calderin | UX/UI Designer

LuiguiCalderin

© 2026, Luigui Calderin | UX/UI Designer

LuiguiCalderin

© 2026, Luigui Calderin | UX/UI Designer