Case Studies

Tony's
Chocolonely

Frontend development for Tony's Chocolonely's custom website and Chocoshop rebuild, using a standalone Node.js application to produce highly animated and dynamic templates for integration into Laravel.

Screenshot of the Tony's Chocolonely website; part of John Kavanagh's selected project work.

In Brief

Tony's Chocolonely was founded twentyone years ago with a mission to combat slavery and exploitation in the cocoa industry. By 2017, its original WordPress website was dated, slow to load, and nonresponsive. The replacement was a custombuilt, vibrant, animated website and Chocoshop that better reflected the brand's mission, product range, and colourful personality.

My Role

I worked on the project as a freelance frontend developer, building from clientprovided wireframes and designs. I produced a standalone Node.js application using Sass and GSAP to generate animated components and page templates, which were then integrated into Tony's Laravel ecosystem and Jenkins pipelines.

Technologies

tonyschocolonely.com
  1. HTML5 & Sass
  2. GSAP
  3. ES6
  4. Node.js
  5. Laravel

In Detail

New vs. Old

The previous Tony's website had served the company well, but by 2017 it was showing its age. It was slow to load, nonresponsive, and based on a simple WordPress theme that no longer matched the scale, personality, or customer expectations of the brand.

The replacement site introduced a more flexible, animated frontend built around Tony's distinctive visual identity, missionled content, and growing ecommerce requirements.

A screenshot of the previous WordPress-based Tony's Chocolonely website homepage from 2017. This was based on a simple theme, was not responsive, and serves as a stark comparison to the website that replaced it.A screenshot of the Tony's Chocolonely website homepage from 2019, at desktop screen size. It has a blue background and a prominent image of their red milk chocolate bar.

A Colourful, Animated Experience

The website was designed around a threepanel structure: mission content to the left in red, the Chocoshop to the right in white, and the main homepage in blue. Page transitions helped create the feeling of moving laterally between those areas, supported by large arrowbased navigation patterns.

Beyond the page transitions, GSAP animation brought movement into the wider interface, with scroll and mouse interactions used to make the site feel closer to Tony's physical brand world.

The Chocoshop

The Chocoshop balanced product discovery with Tony's wider brand messaging. Product listing and product detail pages used a cleaner white background so the colour and irregular shape of the chocolate bars could carry the visual identity.

Product listing pages included a distinctive product spinner, followed by a more conventional product grid, filters, and the ability to add items to basket directly from the listing page.

A screenshot of the Tony's Chocolonely Product Listing page at desktop screen size, showing a bar selector spinner and a grid of products below.A screenshot of the Tony's Chocolonely Product Listing page at mobile screen size, showing a bar selector spinner at the top of the screen, with a grid of products below.

Products in Detail

Product detail pages were responsively optimised around product imagery, bar size, purchase options, and brand messaging, keeping the ecommerce journey clear without losing Tony's campaignled tone.

A screenshot of the Tony's Chocolonely Product Details page at desktop screen size, showing a carousel of product imagery, price, add to basket buttons, and descriptions about the chocolate bar.A screenshot of the Tony's Chocolonely Product Details page at mobile screen size, showing a carousel of product imagery, price, add to basket buttons, and descriptions about the chocolate bar.

Fun Alongside a Serious Message

The 'Our Mission' page gave visitors a deeper view of Tony's work against exploitation in the cocoa industry. The challenge was to support a serious, heavyhitting message without losing the brand's playful character, using JavaScriptdriven stopframe animation to add movement and emphasis.


Have a similar
platform challenge?

I help teams make difficult React, Next.js, migration, performance, and technical SEO work clearer, safer, and easier to deliver.