Skip to content

All work

Sillage

2026Own project

Own project: a demo shop for perfume and cosmetics on WordPress and WooCommerce. A 2 ml sample first, the bottle later, with a real basket and checkout.

Open the site preview
First screen of the Sillage shop: perfume and skincare from small ateliers

Context

The sites I had built so far collected enquiries. Sillage was meant to test whether the same way of working can carry a shop: a basket, orders, statuses, emails and the rules a shop in Poland has to follow. I chose perfume and cosmetics from small ateliers because you cannot smell a scent through a screen, so the site has to tell the story of the scent and let people start with a small sample. Sillage is a demo shop invented for the portfolio. The company Sillage sp. z o.o. with its registration and contact details, the brands, products, prices, delivery times, reviews and the people responsible for the products are fictional, and the product photos are visualisations. BLIK payment and the parcel locker map are simulated: no money is taken and no parcel is sent. A note in the footer of every page says so, and the shop has no connection with House of Sillage or any other existing company. The name is French for the trail of scent a perfume leaves behind a person, hence the tagline "The scent that stays after you leave". The shop itself is in Polish only. I worked on it from 19 October to 4 November 2026.

What I built

Fifty-eight products in thirteen categories from six brands: perfume, skincare and make-up. Every scent can be ordered first as a 2 ml sample, and the bottle comes in several sizes with a price per 100 ml. The home page leads with the scent, not the discount: the "How it smells" section lights up the notes step by step, next to bestsellers from each category, samples and stories about scent families.

The perfume page is long because it stands in for the tester bottle on a shop shelf: a gallery with a shot of the bottle in hand, top, heart and base notes, time of day and longevity, the story of the scent, answers to questions, an "Order a 2 ml sample" button and the product safety information the EU GPSR regulation has required since December 2024. The cosmetics page lists INCI ingredients, how to use the product and when, once opened, it can no longer be returned. Search suggests products by notes as well, the product list filters by scent family, notes, size, price and brand, and the shop remembers recently viewed products.

Sale prices show the lowest price of the 30 days before the discount, taken from the price history, as the Omnibus directive requires. The basket adds two free samples of the shopper's choice from 100 zł and a 10 ml travel spray from 300 zł, and delivery to a parcel locker or by courier is free from 199 zł. The basket says plainly when a price changes during checkout, a discount code expires or a product sells out. Checkout offers a parcel locker with a map and a list of points, a courier and collection in person, BLIK payment with a code screen, a decline and a retry, and a confirmation page that tells the shopper what happens next. Withdrawal from the contract runs through a two-step form that knows the exceptions for opened cosmetics, and the shop keeps track of requests and emails both sides.

Decisions

The shop runs on WordPress and WooCommerce because the owner of a small shop has to run it alone: add a product, set up a sale, handle an order and a return in a dashboard they know or can easily find help with. The basket, checkout and taxes are WooCommerce's proven core, built on blocks. The look is my own block theme, with no page builder and no ready-made template, and what I did not want to take from third-party plugins I wrote as seven of my own: basket and order rules, product data, demo payment and parcel locker, withdrawal, back-in-stock notifications and security.

I wrote the order rules for the failures, not for the path where everything works. A double click on "Order and pay" and two open tabs produce one order. The shop never cancels a paid order on its own, and when a payment arrives for an item that has sold out, the order is marked "Needs attention" and the staff get an email.

I measured speed and accessibility at every deployment. On a phone the home page scores 98 in Lighthouse, the product list 97 and the product page 97, on a computer 100, and accessibility is 100 on each of these pages. The shop meets WCAG 2.2 AA, a purchase can be made with the keyboard alone, and it scores A+ on securityheaders.com and SSL Labs for its security headers and encryption.

Search engines are blocked on purpose, because fictional prices and products should not appear in results without a note that this is a demo. The link from the portfolio and the preview when sharing work as usual. In the portfolio the shop loads without our proxy server, so the basket works in the preview; an order can be placed, but the payment and the parcel stay simulated.

Stack

  • WordPress
  • WooCommerce
Get a quote