What I doWhy IskraAboutPortfolioProcess
PLEN日本語
Get in touch

CEKARO.

Website for a Polish manufacturer of decorative figures that has done everything in its own workshop since 1995: from the mould, through casting, to hand painting. Three language versions, because the figures go to customers all over Europe.

See the live site cekaro.pl
First screen of the CEKARO website: a purple background, the brand wordmark and figures from the catalogue, including a black bull with golden horns.

Iskra

Where it started

It started with the logo. A day later there were three versions of the website: one close to the materials from the client, one with a facelift and a third one in bold 3D.

The whole background architecture of the 3D version made it into production: the gradients, the floor grid and the large brand wordmark. That was the client's decision.

The company wrote its “About us” text itself, in Polish, English and German from the start, so the website was planned in three languages from day one.

Immersion

How it was made

In the gallery, every category has a 3D model of a figure from the catalogue. The figures sway gently and react to the cursor. I removed the full rotation, because the back of the model would be guesswork, and the website is meant to show the real product.

The first screen shows a render of figures from the catalogue: a bull with golden horns, a head, a gorilla and a teddy bear. It replaced an earlier image from an image generator that repainted the products.

The large CEKARO wordmark in the background fills with gold as you scroll. The team photo sticks to the screen next to the text about the company, so no empty space is left under it.

Substance

What is under the hood

Every language has its own address and its own data for search engines, so Google sees three full websites, not one with a switcher. The German version addresses customers with the formal “Sie”, because it is a wholesale market.

Before publishing, the models go through a custom slimming script. A scan weighing 87 MB reaches the website as a 366 KB file.

Technical decisions
for those interested in the code
Next.js 16, static prerendering

Content arrives ready from the server and three.js loads only in the browser, so the text does not wait for the 3D graphics.

three.js, one WebGL context for all tiles

The models share one context, and if one fails to load, a fallback shape stays in its tile, so the gallery is never empty.

gltf-transform in a custom script

Scans weighing tens of megabytes are reduced to a few hundred kilobytes before they reach the website.

PL, EN and DE with canonical and hreflang

Every language has its own address, sitemap entry and sharing image, and x-default points to the English version for the rest of Europe.

GSAP, ScrollTrigger and Lenis

Motion follows scrolling, and with prefers-reduced-motion the animations and smooth scrolling switch off.

JSON-LD LocalBusiness

Search engines get the company details, including the founding year, in a form they understand.