Istanbul, TR
01Context

What it is, why it matters, who it’s for.

What

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.

Why

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.

For

Brand owners, merchandising teams, and small marketing functions who need to keep editing without filing engineering tickets.

02Problem

Makeeachbuildfeelbespokewithoutbecomingbespoke.

Constraints
  • 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
Difficulty

Restraint. Every shortcut becomes someone else’s maintenance burden, and every clever abstraction is a future support ticket.

03Result
Merit Cosmetics · bilingual IKAS storefront.
Merit Cosmetics · bilingual IKAS storefront.
Luneva · Hydrogen + Sanity headless build.
Luneva · Hydrogen + Sanity headless build.
Denpro Grup · multilingual B2B catalog.
Denpro Grup · multilingual B2B catalog.
03Approach

Decisions, in order of stakes.

  1. 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.

  2. 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.

  3. 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.

04Iterations
Merit Cosmetics storefront
Merit Cosmetics

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
Luneva Shopify storefront
Luneva

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
Denpro Grup B2B catalog
Denpro Grup

Multilingual (TR / EN) B2B industrial catalog with server-faceted search across 500+ SKUs. Stack: Next.js, TypeScript, Sanity (CMS), Tailwind.

Visit Denpro Grup
But Why? brand site
But Why?

Brand site with editorial pacing and lightweight motion. Stack: Next.js, TypeScript, Tailwind, Framer Motion.

Visit But Why?
07Outcomes
Result

Fourindependentbrands,fourstackschosenbywhomaintainsthem.

Impact

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.

Independent builds4Merit, Luneva, Denpro, But Why?
Locales shippedTR · EN · ARAcross the four builds
Owned byZero ongoing engineering tickets post-handoff
08Takeaways
Learned
  • ·

    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.

Would change
  • Document the smallest-viable-block-set heuristic for future clients up front — saves a discovery cycle.

Continue
Freelance WorksLoading
/ 10000