Sasha Art
A portfolio and small shop for a painter, where soft organic shapes sit on a strict grid.
Built for Sasha (@art_nl_art), a painter who moved from Kyiv to Maastricht. In development, not yet on her own domain.
- Sector
- Painter · Portfolio & shop
- Year
- 2026
- Services
- Web design, Development, Shop design
- Stack
- Next.js, React, Tailwind CSS, TypeScript, Vercel
(01)The idea
Sasha sells originals and prints through Instagram, one conversation at a time. A full webshop with checkout and stock would have been more machinery than she needs, and prices depend on the piece.
Sasha paints wisteria, lilac and allium: memories of Kyiv mixed with Maastricht's quiet spring evenings. She sells originals and prints, one conversation at a time on Instagram.
So the site doesn't replace that conversation, it starts it. Visitors can browse, collect what they love in a bag, and send it to her in one tap.
Screens



(02)Design choices
Colour
- Papier#F8F3EFGround
- Inkt#2A2130Text and dark buttons
- Pruim#6D4A8AAccent: italic words, the bag
- Pruim zacht#CDB6DESoft accent
- Blos#ECD3DAOrganic shapes
- Salie#C9D3C0Organic shapes
Type
- FrauncesDisplay, with an italic plum accent: "Flowers that hold two cities".
- InterBody and interface.
Colour
Warm paper and plum ink, with blush and sage as soft grounds behind the work. Plum is the one accent: the italic words and the bag.
Type
Fraunces for the headlines, with one phrase in plum italic, and Inter for everything practical. One fluid type scale from 390 to 1280 px.
Shape
Soft organic shapes (arches, petals, pebbles) placed on a strict grid. The shapes may be loose; the edges they sit on never are. Every block starts on the same gutter, every heading on the same baseline step.
Layout
Each painting sits in its own frame shape, an arch, a pebble, a petal or a bloom, so the grid of work feels like a wall of different frames rather than a product listing.
(03)The approach
- 01
Her own house style: arches, petals and pebbles as frames, always placed on the same gutter and baseline. The shapes may be loose; the edges they sit on never are.
- 02
Every artwork comes from her own Instagram posts and captions, so the site never says anything she didn't.
- 03
The shop is a bag, not a checkout: it copies the order and opens an Instagram chat with Sasha, who confirms the price and payment. Nothing is charged on the site, and prices show as "on request" until she sets them.
(04)The stack
- Next.js 16
- A prerendered home page and shop that load fast and cost nothing to run.
- React 19
- Elements for each part (frame, pebble, button, heading, steps), composed into pages.
- Tailwind CSS 4
- The palette and a fluid type scale as tokens; chrome sizes fixed in px.
- TypeScript
- The work for sale is one typed list she can edit: title, kind, size, text, price or "on request".
- Instagram embeds
- Every artwork is Instagram's official post embed, cropped so only the painting shows. The frame links to the original post.
- localStorage
- Keeps the bag between visits, as a convenience. If storage is blocked, the bag simply starts empty.
(05)In the details
- 01
A bag, not a checkout
The bag copies the order and opens an Instagram chat with Sasha. She replies with the final price and payment details. Nothing is charged on the site.
- 02
The bloom
On phones the dock is a soft pebble with the bag as a round plum bloom rising out of the middle, carrying the count, because buying is what the site is for.
- 03
Only her words
Titles, sizes and descriptions come from her own Instagram captions, so the site never says anything she didn't.
- 04
Prices on request, until she sets them
Any work without a price shows "Price on request". Nothing is invented, and adding a payment link per work turns on a Buy now button.
(06) The outcome
A home page and shop in English, with the work list in one typed file she can edit to change what is for sale.
Let’s talk
Let’s build
something uncommon.
A free, no-pressure intake call. You’ll leave with a clear scope and a fixed quote.