Global Texture - Noise Background
Global Texture - Noise Background
    uxproof on two phones: the empty chat, and a chat that lists the uploaded reports and generates a deck
    uxproof on two phones: the empty chat, and a chat that lists the uploaded reports and generates a deck
Client
The Makeup School
Role
UX/UI Designer — design system and developer handoff
Scope
Mobile website, registration and shop states, Figma design system and handoff documentation
Year
2026
Tools
Figma

Context

I designed the mobile site for a makeup school and its shop, along with a Figma design system and the handoff files for building it.

Rinat Gindi is a bridal and on-set makeup artist in Israel. She also teaches a five-hour makeup course to groups of ten women and sells makeup kits and single products. I first worked with her in 2022, on a landing page for her bridal service, and in 2026 she came back to me for the mobile site of her school and shop.

The client supplied the brief, including the order of the sections, the photos, illustrations, logo and copy. My job was to turn that material into one consistent interface and get it ready for her developer to build. I designed the home page, the product menu, product pages for kits and for single products, the shopping bag, the wishlist, the navigation and the registration states, all at 414px. The component system and the handoff notes were made alongside the screens.

The brief also set the design direction. Rinat wanted the site to feel professional and editorial, with a fashion look, and still be friendly enough that the school wouldn’t feel intimidating. The colours were to be warm skin and blush tones, with the pink kept restrained so the site didn’t look childish. She asked for gold only in small accents and for makeup motifs in place of flowers. The illustrated girl who speaks for the visitor in each section had to look editorial too, with nothing cartoonish about her.

What the course includes, on an iPhone held in two hands against a dusty pink backdrop: the instructor, location, group size and duration cards, then the two-week plan with a summary booklet and group access on day one, practice at home, and a certificate and a personal gift on day two
The whole home page in three long columns, with the open menu and the footer beside them. It runs from the hero and the technique video through the illustrated girl’s doubts, the seven reasons to choose the school, the studio, the two-week plan, the reviews, the graduates and Rinat’s story to the price, the three sign-up cards and the contact form

Registration and shop

When a course date or a product runs out, the page offers a different next step.

Each course date has ten places. Before booking, people need to see which dates are open, how many places are left and what they can do if a date is full. I designed three states for the course card: open, one place left and full.

Ten dots stand for the ten makeup stations in the studio, so you can see how full a date is at a glance. When nine places are taken, the last dot is highlighted and the button changes to Reserve last spot. A full date keeps its dates on the card, crossed out, and the booking button is swapped for a waiting-list field that takes a phone number or email.

The shop has a two-column product menu, product pages, a wishlist and a shopping bag. Kits and single products get different product pages. A kit page lists every product in the kit, with a shade choice where there is one. A single product has a shorter page.

When something sells out, the product page swaps the buy button for a field where you can leave a phone number or email to hear when it’s back. In the wishlist the product stays on the list and Add to bag changes to Notify me, so nobody loses what they saved.

The sign-up part of the home page on an iPhone lying on a desk beside a keyboard and pencils: the illustrated girl saying “Shhh… I’m reserving a spot!”, the Sign up heading and a full course date with its waiting-list field
The three course cards from the home page side by side. A full date: its dates crossed out, ten grey dots, 10/10 taken, a waiting-list field for a phone number or email and Notify me when available. A date with one place left: 9/10 taken, the line “The tenth station is the only one left on this date” and Reserve last spot. An open date: 3/10 taken and Reserve your spot
Three product pages in full. The Everyday Kit with a row of shades for each product in the kit, Skin Foundation with its shade choice, and Skin Foundation sold out, with Out of stock over the photo and a field for a phone number or email under Get notified. Each page goes on to Trending, the four service tiles and the footer
The wishlist and the shopping bag, empty and filled. In the filled wishlist each row has Add to bag, and the sold-out Creamy Lip 09 has Notify me. In the filled bag each row has a quantity stepper and a heart on the photo, followed by the subtotal, free shipping, the total and Proceed to checkout

Design system

Figma variables and CSS custom properties share one naming scheme.

Colour is set up in two tiers. 169 primitive variables hold the raw palette, and 103 semantic variables map it to roles such as surface/card and text/inverse. Screens use only the semantic tier. Each semantic variable carries its CSS name as code syntax in Dev Mode, and tokens.css and tokens.json follow the same naming, so surface/card in Figma is --color-surface-card in code. Typography is defined as text styles named by role and size, and the metallic gradients are paint styles bound to color/metallic variables.

The library has 16 component sets and 14 standalone components, each documented with a description. I added variants only where the interface state changes. The Header Bar has five types, each mapped to the screens it belongs to, and the wishlist and the bag share one Line Item component with a variant for each context.

The handoff included the course cards split into live text and SVG artwork. Dates, times, prices and labels can be updated in code, while the frames, capacity dots and dividers stay as fixed assets.

The Makeup School design file open in Figma on a laptop on a dark sofa: the Colour foundations of 02 Foundations beside the three Product Detail screens
Design to code. Eleven semantic variables in Figma, text/primary, text/inverse, text/accent, surface/page, surface/menu, surface/card, surface/control, border/subtle, border/accent, icon/default and layout/header-height, each with its description and primitive, beside its custom property in tokens.css. Under them the Header Bar component that uses layout/header-height, with its description and its five types, Default, Products Menu, Wishlist, Shopping Bag and Menu Open. Last, the Wishlist and Shopping Bag screens with their header types, where the open window’s icon becomes the close button
The colour board from the Figma file: every semantic colour variable, grouped into text, surface, overlay, border, icon and effect, each with its name and value. Below them the primitive palette, then the gradient paint styles in four groups, Rose Gold, Gold, Effects and Overlay, each with its angle and colour stops
Lines from the handoff files: semantic custom properties in tokens.css, such as --color-text-primary: var(--color-ink-850) with the comment “Main copy”, and the same token in tokens.json with its type, value and description
The Line Item component in Figma with its description. Three wishlist rows, two with Add to bag and a sold-out Creamy Lip 09 with Notify me, and three shopping bag rows with a quantity stepper and a filled or empty heart on the photo
The home page hero on an iPhone in a blush pink case, held in two hands with pale pink nails over denim: Beauty in large letters, “Become your own makeup artist”, a model with a brush and a pink compact, and The Makeup School