Back homeJalen Marcelino
● Case study

Jewels By Grace

Custom storefront features for a one-of-a-kind jewelry brand

Role
UI/UX Design & Development
Timeline
March 2025 – Present
Platform
Shopify
Tools
Figma, Shopify, Liquid, JavaScript, Playwright

Jewels By Grace is a Shopify-based jewelry brand specializing in vintage and one-of-a-kind pieces.

I work on the store’s UI/UX design and front-end development on an ongoing basis, translating business goals into custom, production-ready storefront features that Shopify’s stock theme tools don’t support out of the box.

Design Your Charm Bracelet page on a laptop
● 01 · The problem

One-of-a-kind pieces, stock tools

Every charm and bracelet in the catalog is one of a kind, each its own product or variant. The standard storefront wasn’t built for that.

01

No way to picture the finished bracelet

Customers couldn’t see how charms would look together on a bracelet before buying. A static product grid doesn’t convey a build-your-own experience.

02

No home for editorial content

There was no way to publish blog and editorial content with a template that matched the brand.

● 02 · Process

Design first, then prove it works

  • UX research and Figma prototyping before writing any code
  • A custom Liquid section with vanilla JavaScript, refined over multiple rounds of real feedback
  • Surveyed the real catalog to derive filtering rules instead of guessing
  • Every feature verified with Playwright browser tests (drag, cart payloads, UI states) before shipping
● 03 · Mock drafts

Early drafts of the builder

Mock drafts of the charm bracelet builder, made before the final product: placing charms on the bracelet, and the selections list with a running subtotal.

Draft builder with three charms placed on the bracelet
Draft selections list with subtotal and Add Bracelet to Cart
● 04 · Feature · Bracelet builder

Drag-and-drop charm bracelet builder

Customers drag charms onto a photo of the bracelet and preview the result in real time, then add the whole design to their cart in one step.

Bracelet builder with the charm sticker sheet and filters
Two charms placed on the bracelet, with selections and subtotal
01

Custom drag engine

A pointer-based drag engine built from scratch, with a tap-to-place fallback.

02

A filterable “sticker sheet”

Search and filter charms by metal, designer, diamond shape, carat weight, motif (tags auto-derived from product tags) and price range, with sorting and pagination.

03

Real-time subtotal

The price updates as charms are added to or removed from the bracelet.

04

One order, one click

The bracelet and every charm on it go into the cart together as a single order via Shopify’s Cart AJAX API.

● 05 · Feature · Blog

A blog that matches the brand

A custom blog section gives the brand a home for editorial content: a custom “Bunny Mellon” blog template, dynamic hub pages for each category, and a central blog index page.

The template wasn’t only for new posts: more than 70 of the brand’s existing blog posts were rebuilt on it, so the whole archive now shares one consistent design.

Our Blog index on jewelsbygrace.com, on mobile
Bunny Mellon article template on mobile
● 06 · Engineering details

Under the hood

Theme Editor double init

Fixed a Theme Editor double-initialization bug that left an animation stuck.

Dropdown stacking context

Fixed a dropdown stacking-context bug caused by a position: sticky ancestor.

Cleaner dragging

Removed text selection highlighting during drag.

● 07 · Outcome

Live on the store

Both features are live on jewelsbygrace.com. Customers can design a bracelet from one-of-a-kind charms and check out in a single order, and the new blog template carries the brand’s editorial archive, including more than 70 existing posts rebuilt on it.

70+Existing blog posts rebuilt on the new template
1Order for the bracelet and every charm on it
Mar 2025Ongoing design and development since
Next projectSpotify Redesign
← Back home© Jalen Marcelino