VOC Gems · Voyage of Code RU
● Daria · Portfolio Case study № 001
E-commerce · full-stack
2026
Case study · VOC Gems

Voyage
of Code

VOC GEMS — a premium e-commerce platform for rare coloured gemstones and fine jewellery, built on thousands of lines of custom code.

3months of
development
30K+lines
of code
15+custom
modules
2languages
EN / RU
vocgems.com01
01 / OverviewVOC Gems · Voyage of Code
01 / Overview

Client, task
and the idea

E-commerceWordPressWooCommerce LuxuryCustom PHPREST API WDKBilingual
ClientVOC Gems Co., Ltd. · Bangkok, Thailand
Sitevocgems.com
RoleLead Developer + PM
FieldRare coloured gemstones, fine jewellery
Launch14 April 2026
Duration3 months (February — April 2026)
Status● Shipped to production · support continues

VOC Gems is not just an online shop. It is a digital showcase of premium gemstones where every exhibit is unique and the user experience has to match a boutique in Geneva.

The task went far beyond “put a theme on WordPress”. What was needed was an engine that can work with unique SKUs — every stone is one of a kind — display them with full gemmological precision and support professional scenarios: price request, reservation, auctions, certificates. All of it in premium aesthetics, with no compromises.

The result is a hybrid architecture: WordPress as the CMS core, WooCommerce as the commercial base, Directory Kit as the catalogue, Elementor as the visual layer — and on top of all that, thousands of lines of custom PHP, JavaScript and CSS that turn a standard stack into a unique product.

VOC Gems · Voyage of Code02
02 / Code DNAVOC Gems · Voyage of Code
02 / Code DNA

Every page is
made of code

Under the premium visual shell there is custom code for every scenario: from the REST API to the favourites system, from catalogue filters to authorisation modals. Pick a file and see what is inside.

// Custom REST endpoint for the gemstone catalogue
// with filtering across dozens of gemmological parameters
add_action('rest_api_init', function() {
  register_rest_route('catalog/v1', '/stones', [
    'methods'   => 'GET',
    'callback'  => 'get_catalog_items',
  ]);
});

function get_catalog_items($request) {
  global $wpdb;
  $color   = trim($request->get_param('color'));
  $clarity = $request->get_param('clarity') ?: 'any';

  // Jewellery items are excluded (category 42)
  $sql = "SELECT p.*, m.meta_value AS images FROM {$prefix}posts p ...";
  return rest_ensure_response($wpdb->get_results($sql));
}

Catalogue REST API. An endpoint for trade colour, clarity, categories and media. Under 150 ms per request.

// One favourites system — it works everywhere:
// catalogue, product card, personal account
const SiteFav = {
  toggle(stoneId) {
    if (!window.SITE_LOGGED_IN) return SiteFav.openLogin();
    fetch('/wp-json/catalog/v1/favs', {
      method: 'POST',
      headers: { 'X-WP-Nonce': window.SITE_NONCE },
      body: JSON.stringify({ id: stoneId })
    }).then(r => r.json()).then(SiteFav.updateHearts);
  }
};

Favorites. The database table user_favorites plus REST plus shared JS. Three components — one behaviour.

/* VOC Gems — Design Tokens (single source of truth) */
:root {
  --voc-teal: #45BDB0;   --voc-gold: #C9A86C;
  --radius-card: 16px;   --radius-pill: 50px;
  --shadow-card: 0 3px 20px rgba(0,0,0,.04);
  --font-display: 'Playfair Display';
  --font-body: 'DM Sans';
}

Design system. A single source of truth for thirty-odd pages and every custom module. On the next spread you can turn these tokens by hand.

// Smart Auth Guard: protecting closed pages
// with a modal and a return to the original URL
class AuthGuard {
  init() {
    if (!this.isProtected(location.pathname) || window.SITE_LOGGED_IN) return;
    sessionStorage.setItem('return_url', location.href);
    this.renderModal({ title: 'Access to Private Collection' });
  }
}
new AuthGuard(['/item/', '/collection/', '/private/']);

Auth Guard. Protection for four closed sections, with state preserved and the user returned to exactly where he was turned back.

// AI Jewelry Constructor — a proprietary pipeline built from scratch
async function generateJewelry(promptBase, stoneData) {
  const fullPrompt = `vocgems style, ${promptBase}, ${stoneData.type} (${stoneData.weight}ct)`;
  const response = await fetch(AI_ENDPOINT, {
    method: 'POST',
    body: JSON.stringify({ prompt: fullPrompt, style: 'vocgems_custom' })
  });
  return response.json().then(r => r.output.image);
}

AI Jewelry Constructor (V4). A proprietary AI pipeline, built from scratch for this site and this task. Trained on an in-house dataset of 900+ images.

VOC Gems · Voyage of Code03
03 / Catalog APIVOC Gems · Voyage of Code
03 / Catalog API

A filter is a request

Every switch in the catalogue is a parameter of the endpoint and a condition in SQL. Tick the filters on the left and watch the request assemble itself and what goes down to the database. Jewellery items are always excluded from the output — that condition never comes off.

Catalogue filters

The response is cached with WordPress transients and sorted by arrival date. A request takes under 150 ms.

Request to the endpoint
GET /wp-json/catalog/v1/itemscolor=blueclarity=VScut=ovalorigin=sri-lankaweight_min=3
What goes down to the database
WHERE p.post_type = 'wdk-listing' AND p.post_status = 'publish'
  AND t.term_id != 42  — jewellery items excluded
  AND f.field_color = 'blue'
  AND f.field_clarity = 'VS'
  AND f.field_cut = 'oval'
  AND f.field_origin = 'sri-lanka'
  AND CAST(f.field_weight AS DECIMAL) >= 3
VOC Gems · Voyage of Code04
04 / Design systemVOC Gems · Voyage of Code
04 / Design system

A single source of truth

Thirty-odd pages and every custom module take their colours, radii and shadows from one file. Change a value in one place and it changes everywhere. Turn the tokens and watch the stone card on the right: this is the same mechanism that runs on the live site.

--radius-card
--voc-accent
--shadow-card
--radius-card: 016px34px;
--voc-accent: #45BDB0#C9A86C#1A1D1C;
--shadow-card: 0 3px 20px rgba(0,0,0,.05)none;

This is exactly why redesigning a card does not turn into a week of edits across thirty templates: one line changes in design-tokens.css.

Emerald · Vivid green

Colombian Emerald 4.12 ct

Oval · VS · Muzo, Colombia · GRS certificate

Price on request
Catalogue card · example on the site's real tokens
VOC Gems · Voyage of Code05
05 / ArchitectureVOC Gems · Voyage of Code
05 / Architecture

How it all works inside

Five layers, each with its own area of responsibility. Pick a layer and below the diagram you will see what lives there and why.

▼
▼
▼
▼

Edge / CDN. Caching, DNS and SSL before a request ever reaches PHP. Static assets go here too: the more is served from the edge, the less the application does. The average TTFB on the catalogue and cards stays under a second and a half precisely because of the edge plus WordPress transients.

Frontend. Thirty-odd pages in two languages, responsive. HTML, CSS and plain JS with no framework — Elementor Pro as the visual layer, Leaflet and CartoDB on the locations map. The AI constructor lives here as a full section, not as a demo page.

Application. WordPress as the CMS core, WooCommerce as commerce, Directory Kit as the catalogue — and custom plugins on top: catalog-api, commerce-bridge, admin-columns, favorites. A standard stack turns into a unique product exactly at this layer.

Data. MySQL with post and meta tables, a dedicated favourites table, file cache and media, the translation store. Unique SKUs — every stone being one of a kind — called for a separate data model rather than the usual product card with sizes and colours.

External. Three regional-bank accounts with automatic selection by the order currency, a proprietary serverless AI pipeline, mapping and mail. Everything external sits outside the application boundary — if any one service goes down, the site does not.

Layer 01 · Frontend

30+ pages, 2 languages, responsive. HTML / CSS / Vanilla JS · Elementor Pro · Leaflet.js · CartoDB

Layer 02 · Application

PHP 8 · WordPress · WooCommerce · WDK · site-catalog-api.php (REST) · site-commerce-bridge

Layer 03 · Data

MySQL · posts/postmeta · user_favorites table · /site-cache · transients

Layer 04 · Innovation

Custom AI pipeline · 900+ image dataset · built from scratch

Hosting: managed PHP 8, nightly backups, staging environment.

VOC Gems · Voyage of Code06
06 / Key featuresVOC Gems · Voyage of Code
06 / Key features

What was built from scratch

⊕Backend · core

Catalogue REST API

Endpoint /wp-json/catalog/v1/items with filtering by colour, clarity, weight, cut and location. Jewellery items excluded, sorting by date, transient caching.

PHPRESTMySQLWDK
♡Frontend · DB · UX

Favourites system

A dedicated database table user_favorites, three REST endpoints, shared JS. The hearts stay in sync across the catalogue, the product card and the personal account.

MySQLRESTVanilla JS
◧AI · experimental

AI Jewelry Constructor V4

A proprietary AI pipeline built from scratch for this site and this task. Trained on an in-house dataset of 900+ images, it produces visualisations exactly in the brand's style. V4 was fully restyled to the site's design system.

Custom AIIn-house900+ datasetFine-tuned
◎Frontend · data viz

Interactive locations map

Leaflet.js plus CartoDB. Stones are grouped by country of origin. A click on a location shows every gemstone of that region. Branded markers.

Leaflet.jsCartoDBGeoJSON
▤WooCommerce · payments

Multi-currency payments

Three regional-bank accounts (USD / EUR / SEA) with automatic selection by currency. WooCommerce email notifications rebranded into VOC Gems style.

WooCommercePHPHTML Email
✧Innovation · marketing

Emerald Bay (atmospheric)

A canvas animation, “a lighthouse inside a diamond” — a marketing banner in the Emerald category. A conceptual visual that lifts the sense of the premium.

Canvas 2DAnimation
VOC Gems · Voyage of Code07
07 / TimelineVOC Gems · Voyage of Code
07 / Timeline

The road from idea
to production

Foundation

Project start. Architecture and stack

Choosing WordPress, WooCommerce, WDK and Elementor Pro as the hybrid base. Setting up managed hosting, Cloudflare, SSL, backups. The design system and the first layouts. The stack was chosen for the task rather than out of habit: unique SKUs sit badly on an ordinary product catalogue.

Build-out

Base pages and catalogue

Building the catalogue with a REST API, filters and a product card. Integrating the WDK fields. Responsive layout. Pages load in under a second and a half.

Luxury polish

Premium frontend

A dynamic Featured Stones carousel. An interactive map on Leaflet.js. A dynamic news system. SVG animations of the cuts on the homepage. The “Voyage of Colors” hero. The jewellery module and the favourites system with its own table in the database.

AI layer

A proprietary AI pipeline

AI Jewelry Constructor — a pipeline for generating jewellery visualisations, built from scratch. Trained on an in-house dataset of 900+ images and integrated into the site as a full production module, not as a demo.

Hard launch

Release to production

14 April 2026 — the official launch of vocgems.com. In three months: from a blank sheet to a working premium e-commerce with an AI module. Client enquiries, the first orders, email notifications in the brand's style, multi-currency payments through a regional bank.

Ongoing

Support and development

The project was delivered, but at the client's request I continue to maintain the site: developing functionality, new features, optimisation, support for the AI module. A long-term relationship is part of the work too.

VOC Gems · Voyage of Code08
08 / MetricsVOC Gems · Voyage of Code
08 / Metrics

Numbers that speak
for themselves

30K+lines of code

The total volume of custom PHP, JS and CSS. Not counting the template code of WordPress and WooCommerce.

<1.5savg page load

Average TTFB on the catalogue and the cards. Cloudflare edge plus WordPress transients.

900+AI dataset

Images in the in-house dataset used to train the proprietary VOC Gems AI pipeline.

15+custom modules

Plugins, REST endpoints and JS systems written from scratch for the project.

3currencies

USD · EUR · SEA — multi-currency regional-bank accounts, selected automatically by order currency.

2languages

EN / RU. Every page, article and SEO meta tag. Language persists through the session.


How I work

01

Immersion

I get into the client's business far enough to speak his language — in the case of VOC Gems that meant gemmology.

02

Architecture

The stack fits the task, not the habit. Design tokens and API contracts before a line of code.

03

Iterations

Fast rounds: prototype → feedback → revision. The problem solved whole, not smeared across weeks.

04

Production

Monitoring, caching, tests on real traffic, documentation for every non-standard decision.

VOC Gems · Voyage of Code09
“
Every stone in VOC Gems is one of a kind. Which is why the site could not be a template.
Design philosophy · 2026
09 / About the authorVOC Gems · Voyage of Code
09 / About the author

The person behind the code

DS
Who · what I do · why

Daria Platonovna
Seehof

Art Director · Designer · Developer

I am one of those rare hybridswho can both draw a projectand build it by hand — from the first sketch to production code.

My approach is “do not separate design from development”. When one person sees the project whole, from the typographic grid to the REST endpoint, what comes out is more than the sum of the layers. That is how VOC Gems came about: not one pixel was “handed over” from a mock-up to a developer — because the designer and the developer were the same person.

I run projects from zero to release: I get into the client's business far enough to speak his language, whether that is gemmology or AI pipelines. I solve the problem whole rather than smear it across weeks.

3roles in one person
End-to-Endfrom concept to deploy
AI/MLan in-house stack
∞%of perfectionism per pixel
Story · 01

The designer who went into the code

I started as an art director — drawing brands, moodboards, identities. At some point I realised: for design to actually live, you have to be able to build it yourself. Now I write PHP, JS and CSS.

Story · 02

AI as a new brush

I did not wait for ready-made solutions — I built an AI pipeline from scratch for the client's task. Trained my own model on 900+ VOC Gems images. It is now a production module on the site.

Story · 03

VOC Gems — the full cycle

One person: developer, designer, PM, AI engineer. Three months from a blank sheet to production. 30K+ lines of code, two languages, integration with a regional bank in South-East Asia. The site is delivered — and I keep maintaining it.

VOC Gems · Voyage of Code10
Thank you for reading

The next project
could be yours.

This case study is not a presentation but a cross-section of a real production project that serves clients around the world every day. Every line of code was written. Every pixel was drawn. Every decision was made.

From idea to launch. From the first sketch to production code. One person — the whole way.

VOC Gems · Voyage of Code · case study № 001 · 2026 dariaseehof.ru — more work