The problem
Eternal Brilliance LA sells fine jewelry, and fine jewelry is sold on presentation. A necklace at this price point needs to be seen moving, seen in each colour of metal, seen next to the earrings it pairs with, and bought without a checkout form that looks like every other WooCommerce store. Off-the-shelf themes get most of that wrong in small ways that add up: a stock product grid, a generic price range on variable products, a cart and checkout styled for someone else's brand.
The brand also needed to own its platform. Product variations, metals and sizes change constantly, so the merchandising had to be editable by the team without a developer. And the site had to run somewhere the brand controlled, fast enough for image-heavy catalogue pages, without a managed-hosting bill scaling with traffic.
What the brand needed
- A storefront that looks like the jewelry: Custom design from the homepage to the checkout, not a theme with the colours changed.
- Jewelry-specific product pages: Video, hover states, colour galleries, sizes and pairings, all manageable from the WordPress admin.
- Two ways to get paid: Card payments through WooPayments with Square alongside it.
- Fast on a server the brand owns: A VPS with proper caching, image optimisation and reliable transactional email.
What we built
A hand-written theme on TailPress
The theme, called eb, is built on TailPress, a boilerplate that brings Tailwind CSS into a classic WordPress theme. Source CSS lives in modular PostCSS files (header, footer, frontpage, products, WooCommerce overrides) and compiles through Laravel Mix; JavaScript is split into a frontpage products module, a variation handler and a single-product handler, with AOS for scroll animation, Swiper for galleries and fslightbox for zoom. WordPress core, plugins and uploads are ignored by git; the theme is the only thing under version control, which keeps the repository honest.
Product content modelled in ACF
Eight ACF Pro field groups carry everything the default WooCommerce product does not. A product can have a video that plays in place of the static image, a hover image for the grid, a media gallery per colour variation, links to the same piece in other sizes, suggested products and a curated "greatly paired up with" set. Attribute terms get their own images and galleries, categories get a video, and shared settings such as shipping details are managed in one place. The homepage hero is an ACF group too, with heading, copy, background image or video, an FAQ list and an "our story" block. Field groups are exported to acf-json, so a change to the content model is a commit, not a mystery.
WooCommerce, overridden where it mattered
Nineteen WooCommerce templates are overridden in the theme: the product archive and loop item, the single product page with its image, price, short description and add-to-cart partials, the variation content, cart shipping and the checkout form. Variable-product price output is filtered so jewelry does not show a meaningless "from X to Y" range, and the product title and price update as the shopper picks a variation. A store filter offers shop-by-collection and by-price on the catalogue. Add-to-cart redirects are customised, and post-registration redirects land the customer somewhere useful.
The checkout form override is isolated in a child theme, ebs. That separation means checkout can be tuned for payment-processor or compliance changes without a risk of regressing the storefront, and vice versa.
What shipped
How it runs
A VPS the brand controls
Caching and images
Compliance and deliverability
Ongoing care
Problems worth talking about
Variable prices on jewelry
WooCommerce shows a price range on variable products by default. For a pendant offered in three metals, "from $X to $Y" tells the shopper nothing. The theme filters both the regular and sale variable price HTML, shows a single sensible figure in the grid, and swaps in the exact price and title once a variation is chosen on the product page.
Keeping the builder out
Every section the team needs to edit is an ACF field, not a builder widget. That keeps markup under Tailwind's control, keeps the CSS bundle small, and means a redesign is a template change rather than a page-by-page rebuild.
Deploy discipline
The project rules are simple and enforced: run a production build before any deploy, upload the changed theme files and commit them in the same step, never touch wp-config or environment files in tooling, and purge LiteSpeed afterwards. Backup copies of earlier template versions are kept in the repo but never loaded.
Where it stands
What we can and cannot claim
The store is live at eternalbrilliancela.com on the custom theme. The counts above (19 template overrides, 8 ACF field groups, two payment processors) are taken from the theme's codebase. We have not been given analytics or sales reporting for this client, so this page carries no traffic, conversion or revenue figures.
Keep the site online, fast and safe, so the team can focus on the jewelry business.
— Project brief, Eternal Brilliance LA
What This Project Does Well
Technologies Used
WordPress 6.x, WooCommerce, custom TailPress theme, Tailwind CSS 3.4 with PostCSS, Laravel Mix (Webpack), Advanced Custom Fields Pro, WooCommerce Payments, Square, AOS, Swiper, fslightbox, LiteSpeed Cache, Smush, WP Mail SMTP, Complianz GDPR, Nginx, PHP-FPM, MariaDB, CloudPanel on a Contabo VPS
Ready to Build Something Similar?
Let's discuss how we can help transform your business with a custom digital solution.
