Case Studies

Tony's
Chocolonely

Frontend development for Tony's Chocolonely's website and Chocoshop rebuild, using Node.js, Sass, and GSAP to create animated 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, products, and distinctive personality.

My Role

I worked on the project as a freelance frontend developer, translating clientprovided wireframes and designs into the responsive, animated front end. I developed the interface within a standalone Node.js application, producing components and page templates for integration into Tony's Laravel application and Jenkins delivery pipelines.

Technologies

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

In Detail

New vs. Old

By 2017, Tony's original WordPress website no longer reflected the scale or personality of the brand, and its nonresponsive, slowloading front end had become increasingly limiting.

The replacement introduced a far more flexible, animated experience 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 structured around three distinct areas: mission content to the left in red, the Chocoshop to the right in white, and the main homepage in blue. Large arrowbased navigation and animated page transitions created the feeling of moving laterally between them.

GSAP animation extended that sense of movement across the wider interface, with scroll and mouse interactions helping the digital experience 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, allowing the colour and irregular shape of the chocolate bars to carry the visual identity.

Product listing pages combined a distinctive product spinner with a more conventional grid, filtering, and direct addtobasket functionality.

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 designed around product imagery, bar size, purchase options, and brand messaging, keeping the buying journey clear without losing Tony's distinctive 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 communicate a serious, hardhitting message without losing the brand's playful character, using JavaScriptdriven stopframe animation to add movement and emphasis.


Facing a complex
web platform problem?

Send me the context, constraints, and current blockers. I'll help you identify the practical route forward.