What it is, why it matters, who it’s for.
Four independent client builds delivered outside any agency or in-house role — each shipped end-to-end and handed back to the brand or merchandising team.
Every engagement had a different surface (DTC storefront, headless commerce, multilingual catalog, brand site) but the same constraint: small scope, fast turnaround, no internal eng team to maintain it.
Brand owners, merchandising teams, and small marketing functions who need to keep editing without filing engineering tickets.
Makeeachbuildfeelbespokewithoutbecomingbespoke.
- 01Single-developer delivery, no in-house follow-up team
- 02Editors own every campaign, SKU, and content change after launch
- 03Multilingual where it matters (TR / EN / AR)
- 04Each brand expresses itself through tokens, not component sprawl
Restraint. Every shortcut becomes someone else’s maintenance burden, and every clever abstraction is a future support ticket.
Decisions, in order of stakes.
- 01
Pick the platform that earns its keep
IKAS for managed DTC, Shopify Hydrogen + Oxygen for headless, Next.js + Sanity for editorial. The stack always follows the team that has to maintain it, never the other way around.
- 02
Smallest viable block set
Defined the blocks editors actually use weekly — not the maximalist library, the minimalist one. Trimmed twice before launch on every project.
- 03
Brand voice in tokens
Type ramps, motion primitives, and spacing scales lived in shared scaffolding. Each brand expressed itself through scene tokens and one accent.
Custom IKAS theme on Next.js 13 for a bilingual (EN / AR) DTC beauty storefront. Stack: @ikas/storefront v4, Next.js, TypeScript, Tailwind 4, Headless UI, Keen Slider, EmailJS.
Visit Merit Cosmetics ↗Shopify headless storefront on Hydrogen 2025.7 + React Router 7, edge-served on Oxygen, with a Sanity v4 Studio for editorial content. Stack: Hydrogen, React Router 7, Shopify Storefront API, Sanity, Tailwind 4, Radix UI, Framer Motion, Lenis, GraphQL Codegen.
Visit Luneva ↗Multilingual (TR / EN) B2B industrial catalog with server-faceted search across 500+ SKUs. Stack: Next.js, TypeScript, Sanity (CMS), Tailwind.
Visit Denpro Grup ↗Brand site with editorial pacing and lightweight motion. Stack: Next.js, TypeScript, Tailwind, Framer Motion.
Visit But Why? ↗Fourindependentbrands,fourstackschosenbywhomaintainsthem.
Each project was delivered end-to-end and handed off to the brand or merchandising team. Live sites are linked above; technology choices follow the team that has to live with them, not the other way around.
- ·
On freelance work, the platform decision is a maintenance decision. Pick what the team can edit, not what is fashionable.
- ·
Restraint is the design system. Cutting blocks before launch saves every project from itself.
- →
Document the smallest-viable-block-set heuristic for future clients up front — saves a discovery cycle.


