How we design.

UI/UX design is part of every package we sell. This page shows what that means in practice: every stage of one web shop, with the real sketches and files. The shop is HANKI, a made-up client and our own demo.

01Brief

First we agree what the shop has to achieve, and for whom.

Every project starts with a short brief we go through together. For HANKI we wrote it as we would for a real client: goals, users, must-haves and a sitemap.

Client
HANKI, a small Tampere clothing label whose studio and shop share one room. Made up: the label doesn't exist.
Goals
  1. Put the winter collection online so the photos and the clothes look their best.
  2. Fewer questions about size: measurements and fit on every product page.
  3. Pickup at the studio, so customers can try things on while they're there.
Users
People who buy less but better. They often browse on a phone, sometimes several times before buying. Some live in Tampere and want to come in and try things on.
Collection
AW26: 13 clothes and accessories, plus a gift card.

Requirements

  1. R1A size must be chosen before an item can go in the bag.
  2. R2Sold-out sizes stay visible but can't be picked.
  3. R3Stock is checked again on the server when the order is sent.
  4. R4Prices include 25.5% VAT, and say so next to the price.
  5. R5Pickup at the studio, a parcel locker or home delivery. Parcel lockers are free on orders over €200.
  6. R6Discount codes and gift cards.
  7. R7In Finnish and English, with the same content in both.
  8. R8Works on phones and with the keyboard alone, and calms its motion when the visitor has asked for that in their device settings.
  9. R9A test payment in the demo; a Finnish payment service in a real shop.
  • Front page: AW26 collection and lookbook
    • Shop (All 14 products) → Categories (7 groups and filters) → Product page (14 pages) → Size guide (A panel on the product page)
    • Gift cards (From the top menu) → Gift card (3 amounts, by email)
    • Bag (A panel and its own page) → Checkout (Three steps on one page) → Payment (Payment service (a test here)) → Confirmation (Order number)
    • Delivery and returns (A section on the front page)
    • Privacy (From the footer)
The sitemap. Dashed: panels and overlays that open on top of a page rather than being pages of their own.

02User flow

Then we draw the path a customer takes, from a photo to an order number.

The flow shows where a customer might hesitate or slip, and what we tell them when they do. Every message below appears in the shop word for word.

  1. Browse: Front page or shop
  2. Product: Photos and fit
  3. Size: Required. No size: “Choose a size first.”
  4. Bag: Slides in. “Continue shopping” (back to step 1)
  5. Checkout: Details, delivery. “Please check the marked fields.”
  6. Payment: A test in the demo. Cancel, or an item sold out meanwhile (back to step 5)
  7. Confirmed: Order number
The path from a product to an order number. Dashed: the detours and the messages shown on them. From a product page to an order number: 6 clicks and 3 fields with pickup as the delivery. Counted by running the path in a browser.

03Wireframes

We draw the structure in grey before thinking about colour or photos.

A wireframe shows what's on a page and in what order, on a computer and on a phone. It's easy to say “move this up” before anything has been built.

Front page

Computer, 1,440 px
Phone, 390 px
  1. The collection name and one link on the photo. No other text in the first view.
  2. The header is see-through over the photo and gets a background once you scroll past it.
  3. The bag and its item count are always in view.

Product page

Computer, 1,440 px
Phone, 390 px
  1. The main photo fits one screen, with the name, price and sizes beside it.
  2. The price includes VAT, and says so.
  3. Sizes in a row, like on a pattern sheet. A sold-out size is struck through.
  4. Quantity and add to bag on one row.

Checkout

Computer, 1,440 px
Phone, 390 px
  1. Three numbered steps on one page, not separate pages.
  2. The summary stays in view. On a phone it comes first.
  3. Delivery options as rows, each with its price.

We redrew these wireframes for this page from the finished shop's measurements, so you can compare them directly with the result.

04Visual style

The look comes together on one sheet: colours, type, components and photos.

A style tile is the agreement on the look. Once it's approved, every page follows it. Everything on the tile below is drawn with the shop's own stylesheet, so it matches the shop exactly.

HANKI's style tile: colours with their hex codes, Bodoni Moda and Schibsted Grotesk specimens, buttons, the size row, colour picker, fields, price, delivery option, spacing and four photographs.

05Components and states

Every part is designed for when something is sold out, empty or wrong, too.

A good shop isn't only a screenshot. Below are the shop's real parts, with its own styles, in the states customers actually run into.

Product card

Default. First photo, name, price and colours.
On hover. The card fades to the garment's second photo.
Few left. A stock note from the live stock, in chalk blue.
Sold out. When every size has gone. Shown here as an example.

Choosing a size

No size chosen. Adding stops and says why.
Few left. The count shows once a size is picked.
Sold-out size. XL shows struck through and can't be picked.

The bag

Empty. One sentence and a way back to the shop.
Item added. The bag says what was added and works out delivery and VAT.

Forms

Errors. Each error says what to fix, under its field.
Discount code. A wrong code and an accepted one.

06The result

Then we build it. Drag to compare the sketch with the finished page.

We code the pages ourselves instead of starting from a ready-made template, so the finished page is the one that was designed.

HANKI's finished front page: a hooded knit coat in the snow across the whole screen and the title Winter AW26.
Front page. Drag the line, or use the arrow keys.
The finished product page: the Kide coat photo, price €489, colour and sizes, XL sold out.
Product page. Drag the line, or use the arrow keys.
The front page on a phone: the cover photo and the title Winter.
The front page on a phone
The product page on a phone: the name Kide, price, colour and sizes.
Name, price and sizes under the photo
The bag on a phone: Kide added, the subtotal and the checkout button.
The bag fills the whole screen

The shop really works: pick a size, try the code DEMO10 and pay with a test payment. No money is taken and nothing is shipped.

Try the finished shop

07Testing

Finally, we measure. These numbers were measured on this shop.

Testing shows what works, and also what still needs work. That's why we show the number that isn't on target yet, too.

Contrast

SampleUsed forRatioWCAG
#181716 / #f4f2eeText16.0:1AAA
#48443f / #f4f2eeSecondary text8.6:1AAA
#69645d / #f4f2eeHints and VAT lines5.2:1AA
#2b44ad / #f4f2eeStock and discount notes7.4:1AAA
#f4f2ee / #181716Button label16.0:1AAA
#ffffff / #2b44adButton on hover8.3:1AAA
#a1261c / #f4f2eeError messages6.7:1AA
#69645d / #fbfaf7Hints on paper5.6:1AA

Worked out from the colours in the shop's stylesheet with the WCAG 2 formula. Normal text needs at least 4.5:1.

Measurements

  • Keyboard

    From a product page through choosing a size and the bag to the checkout, keyboard only. The focus was visible at 21 of 21 stops.

    24 key presses

  • Screen sizes

    Screens 390, 768, 1,024, 1,280, 1,440, 1,920, 2,560 px wide. Front page, shop, product page, bag and checkout: 35 combinations, no sideways scrolling in any of them.

    35/35 without sideways scrolling

  • Loading on a phone

    The front page's largest picture was ready in 3.6 seconds on a simulated slow 4G connection with a processor slowed down four times (0.7 MB, 14 files). Google's line for good is 2.5 s, so there is still work to do here: the phone cover photo can be made lighter.

    3.6 s

  • Loading on a computer

    The same measurement on a fast line (10 Mbit/s, 40 ms latency): 0.8 MB, 16 files.

    0.43 s

  • The purchase path

    An automated browser test runs the whole path in Finnish and English: the required size, the bag, a wrong and a right discount code, checkout errors, the test payment, stock going down and no email being sent for orders.

    7 tests × 2 languages

Measured on 13 October 2026 on a local server running the same code as the live demo. Measurement script: tests/case-measure.mjs.

Want a shop designed like this?

Tell us on a free 20-minute call what you sell and to whom. You get a fixed price before any work starts, and the design is included.