---
title: Farfetch Clone Development Company
description: 
url: https://miracuves.com/farfetch-clone/development-company
date_modified: 2026-08-24
author: miracuves
language: en_US
---

.mcv-ffd{
    --crimson:#e8344f; --crimson-deep:#a70d2a; --crimson-hot:#d81b46; --crimson-light:#ff8090;
    --amber:#fbbf24; --black:#0a0a0a; --white:#ffffff; --paper:#faf8f8; --ink:#191419; --ink-dim:#6d666d;
    --line:rgba(11,11,16,0.1); --line-light:rgba(255,255,255,0.12);
    --card-bg:rgba(8,3,8,0.82);
    font-family:'Plus Jakarta Sans',Arial,sans-serif; color:var(--ink); background:var(--white); margin:0; padding:0;
  }
  .mcv-ffd *{ box-sizing:border-box; }
  .mcv-ffd h1,.mcv-ffd h2,.mcv-ffd h3{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:800; margin:0; letter-spacing:-0.02em; line-height:1.12; }
  .mcv-ffd p{ margin:0 0 14px; line-height:1.7; color:var(--ink); }
  .mcv-ffd a{ color:var(--crimson-deep); text-decoration:none; }
  .mcv-ffd .mono{ font-family:'JetBrains Mono',monospace; }
  .mcv-ffd-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; position:relative; z-index:2; }
  .mcv-ffd-bleed{ position:relative; left:50%; right:50%; margin-left:-50vw; margin-right:-50vw; width:100vw; }

  .mcv-seo-ref{ background:#FFF7E0; border:2px dashed #C79A00; padding:18px 22px; font-family:Arial,sans-serif; font-size:13px; color:#4A3B00; max-width:1180px; margin:18px auto; border-radius:8px; }

  .mcv-ffd-crumb{ display:flex; gap:8px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.62); margin-bottom:20px; }
  .mcv-ffd-crumb a{ color:rgba(255,255,255,.62); }
  .mcv-ffd-crumb a:hover{ color:var(--crimson-light); }
  .mcv-ffd-crumb span.sep{ opacity:.5; }
  .mcv-ffd-crumb span.cur{ color:rgba(255,255,255,.75); }

  .mcv-ffd-eyebrow{ display:inline-flex; align-items:center; gap:8px; padding:7px 16px; border-radius:100px; background:rgba(255,255,255,.06); border:1px solid var(--line-light); font-family:'JetBrains Mono',monospace; font-size:11.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--crimson-light); margin-bottom:22px; }
  .mcv-ffd-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--crimson); }

  .mcv-ffd-hero{ background:radial-gradient(ellipse 900px 500px at 85% -10%, rgba(232,52,79,.16), transparent), #0a0a0a; color:#fff; padding:56px 0 150px; position:relative; overflow:hidden; }
  .mcv-ffd-hero .ring{ position:absolute; border:2px solid rgba(232,52,79,.18); border-radius:50%; pointer-events:none; }
  .mcv-ffd-hero .ring1{ width:560px; height:560px; top:-260px; right:-200px; }
  .mcv-ffd-hero .ring2{ width:340px; height:340px; bottom:-200px; right:120px; border-color:rgba(232,52,79,.1); }
  .mcv-ffd-herogrid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:48px; align-items:center; }
  .mcv-ffd-hero h1{ font-size:clamp(27px,3.9vw,44px); color:#fff; }
  .mcv-ffd-hero h1 em{ font-style:normal; color:#ff8090; }
  .mcv-ffd-hero p.sub{ font-size:16px; color:rgba(255,255,255,.68); max-width:600px; margin:20px 0 30px; }

  .mcv-ffd a.mcv-ffd-btn{ display:inline-flex; align-items:center; gap:8px; border-radius:12px; background:linear-gradient(160deg,#d81b46,#e8344f); color:#fff; font-weight:700; font-size:15px; padding:15px 28px; box-shadow:0 10px 30px rgba(232,52,79,.3); transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s; }
  .mcv-ffd a.mcv-ffd-btn:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 14px 36px rgba(232,52,79,.42); text-decoration:none; }
  .mcv-ffd a.mcv-ffd-btn-outline{ display:inline-flex; align-items:center; border:2px solid rgba(255,255,255,.7); color:#fff; border-radius:12px; font-weight:700; font-size:15px; padding:13px 26px; margin-left:12px; transition:all .2s; }
  .mcv-ffd a.mcv-ffd-btn-outline:hover{ background:#fff; color:#191419; text-decoration:none; }

  .mcv-ffd-trust{ display:flex; flex-wrap:wrap; gap:22px; margin-top:34px; padding-top:24px; border-top:1px solid var(--line-light); }
  .mcv-ffd-trust-item{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:rgba(255,255,255,.6); }
  .mcv-ffd-trust-item strong{ font-family:'JetBrains Mono',monospace; color:#fff; font-size:14px; }

  .mcv-ffd-cardstack{ position:relative; height:340px; }
  .mcv-ffd-fincard{ position:absolute; width:300px; height:180px; border-radius:18px; padding:22px; background:linear-gradient(150deg,#1c1418,#0d0709); border:1px solid var(--line-light); box-shadow:0 30px 70px rgba(0,0,0,.5); }
  .mcv-ffd-fincard.c1{ top:0; left:10px; z-index:1; opacity:.5; transform:rotate(-6deg) scale(.92); }
  .mcv-ffd-fincard.c2{ top:30px; left:40px; z-index:2; background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border-color:rgba(232,52,79,.3); box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-ffd-fincard .brand{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.55); }
  .mcv-ffd-fincard .chip{ width:34px; height:24px; border-radius:5px; background:linear-gradient(135deg,#ff8090,#e8344f); margin:22px 0 18px; }
  .mcv-ffd-fincard .num{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; letter-spacing:.1em; }
  .mcv-ffd-fincard .curr{ position:absolute; bottom:22px; right:22px; font-family:'JetBrains Mono',monospace; font-size:11px; color:#ff8090; }
  .mcv-ffd-float{ position:absolute; background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:14px; padding:12px 16px; box-shadow:0 16px 40px rgba(0,0,0,.35); z-index:3; }
  .mcv-ffd-float .k2{ font-family:'JetBrains Mono',monospace; font-size:10px; color:#ff8090; text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; }
  .mcv-ffd-float .v{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; font-weight:700; }
  .mcv-ffd-float-1{ top:-10px; right:0; }
  .mcv-ffd-float-2{ bottom:10px; left:0; }

  .mcv-ffd-statbar{ margin-top:-72px; position:relative; z-index:3; }
  .mcv-ffd-statbar .inner{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:18px; box-shadow:0 24px 60px rgba(0,0,0,.35); padding:32px 20px; display:grid; grid-template-columns:repeat(4,1fr); }
  .mcv-ffd-statbar .stat{ text-align:center; padding:0 12px; border-right:1px solid var(--line-light); }
  .mcv-ffd-statbar .stat:last-child{ border-right:none; }
  .mcv-ffd-statbar .num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:22px; color:#ff8090; }
  .mcv-ffd-statbar .lbl{ font-size:11.5px; color:rgba(255,255,255,.62); margin-top:6px; line-height:1.4; }

  .mcv-ffd-section{ padding:100px 0 76px; }
  .mcv-ffd-section.paper{ background:#faf8f8; }
  .mcv-ffd-section.tight{ padding-top:76px; }
  .mcv-ffd-head{ text-align:center; max-width:720px; margin:0 auto 48px; }
  .mcv-ffd-head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-ffd-head h2{ font-size:clamp(22px,3vw,34px); color:#191419; }
  .mcv-ffd-head p{ color:#6d666d; margin-top:14px; }

  .mcv-ffd-rolegrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-ffd-rolecard{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-ffd-rolecard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-ffd-roleicon{ width:40px; height:40px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:16px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-ffd-rolecard h3{ font-size:17px; margin-bottom:12px; color:#191419; }
  .mcv-ffd-rolecard ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-ffd-rolecard li{ margin-bottom:8px; line-height:1.5; }

  .mcv-ffd-tablewrap{ overflow-x:auto; border-radius:16px; box-shadow:0 12px 34px rgba(0,0,0,.07); border:1px solid var(--line); }
  table.mcv-ffd-table{ border-collapse:collapse; width:100%; min-width:680px; background:#fff; font-size:13.5px; }
  table.mcv-ffd-table th{ background:#0a0a0a; color:#ffffff; text-align:left; padding:14px 16px; font-family:'JetBrains Mono',monospace; font-weight:600; font-size:12px; letter-spacing:.04em; text-transform:uppercase; }
  table.mcv-ffd-table td{ padding:14px 16px; border-bottom:1px solid rgba(11,11,16,0.1); vertical-align:top; color:#191419; }
  table.mcv-ffd-table td.hl{ background:rgba(232,52,79,.06); border-top:3px solid #e8344f; font-weight:600; color:#191419; }
  table.mcv-ffd-table th.hl{ background:#e8344f; color:#ffffff; }
  table.mcv-ffd-table tbody tr:hover td{ background:#f4f1f1; color:#191419; }
  table.mcv-ffd-table tbody tr:hover td.hl{ background:rgba(232,52,79,.13); color:#191419; }
  table.mcv-ffd-table tr:last-child td{ border-bottom:none; }
  .mcv-ffd-note{ font-size:12.5px; color:#6d666d; margin-top:12px; }

  .mcv-ffd-callout{ background:linear-gradient(135deg,#2B0710,#4A0F1E); color:#fff; border-radius:20px; padding:40px 44px; }
  .mcv-ffd-callout h2,.mcv-ffd-callout h3{ color:#fff; font-size:22px; margin-bottom:12px; }
  .mcv-ffd-callout p{ color:rgba(255,255,255,.78); font-size:14.5px; margin:0; }

  .mcv-ffd-honest{ background:#fff; border:1px solid var(--line); border-left:4px solid #fbbf24; border-radius:14px; padding:28px 30px; }
  .mcv-ffd-honest h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-ffd-honestgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px 28px; }
  .mcv-ffd-honestgrid div{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:18px; position:relative; }
  .mcv-ffd-honestgrid div::before{ content:'!'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#8a6100; }

  .mcv-ffd-cs{ background:#fff; border:1px solid var(--line); border-radius:20px; padding:32px 34px; display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; box-shadow:0 8px 24px rgba(0,0,0,.05); }
  .mcv-ffd-cs-badge{ display:inline-flex; align-items:center; gap:7px; padding:6px 14px; border-radius:100px; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-ffd-cs-badge .dot{ width:6px; height:6px; border-radius:50%; background:#e8344f; }
  .mcv-ffd-cs-body{ flex:1; min-width:260px; }
  .mcv-ffd-cs-body h3{ font-size:16.5px; margin-bottom:6px; color:#191419; }
  .mcv-ffd-cs-body p{ color:#6d666d; font-size:13.5px; margin:0; max-width:460px; }
  .mcv-ffd a.mcv-ffd-cs-link{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; color:#a70d2a; white-space:nowrap; }

  .mcv-ffd-faqgrid{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; max-width:1000px; margin:0 auto; }
  .mcv-ffd-faq details{ border-bottom:1px solid var(--line); padding:18px 0; }
  .mcv-ffd-faq summary{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:700; font-size:15px; color:#191419; cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px; }
  .mcv-ffd-faq summary::-webkit-details-marker{ display:none; }
  .mcv-ffd-faq summary::after{ content:'+'; font-family:'JetBrains Mono',monospace; color:#a70d2a; font-size:20px; font-weight:700; flex:none; }
  .mcv-ffd-faq details[open] summary::after{ content:'\2212'; }
  .mcv-ffd-faq .a{ color:#6d666d; font-size:13.5px; margin-top:10px; line-height:1.65; }

  .mcv-ffd-cta{ background:linear-gradient(120deg,#e8344f,#6e0e1f); color:#fff; padding:64px 0; position:relative; overflow:hidden; }
  .mcv-ffd-cta .ring{ position:absolute; border:2px solid rgba(255,255,255,.14); border-radius:50%; width:360px; height:360px; top:-140px; right:-100px; }
  .mcv-ffd-cta .flex{ display:flex; justify-content:space-between; align-items:center; gap:28px; flex-wrap:wrap; position:relative; z-index:2; }
  .mcv-ffd-cta h2{ color:#fff; font-size:clamp(20px,2.6vw,28px); margin-bottom:8px; }
  .mcv-ffd-cta p{ color:rgba(255,255,255,.82); margin:0; max-width:460px; }
  .mcv-ffd-cta a.mcv-ffd-btn-outline{ border-color:#fff; }
  .mcv-ffd-cta a.mcv-ffd-btn{ background:#fff; box-shadow:0 10px 30px rgba(0,0,0,.2); }
  .mcv-ffd-cta a.mcv-ffd-btn,.mcv-ffd-cta a.mcv-ffd-btn:hover{ color:#a70d2a; }

  .mcv-ffd-explore{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
  .mcv-ffd a.mcv-ffd-pill{ font-family:'JetBrains Mono',monospace; font-size:12.5px; font-weight:600; padding:10px 18px; border-radius:100px; border:1px solid var(--line); color:#191419; background:#fff; transition:all .2s; }
  .mcv-ffd a.mcv-ffd-pill:hover{ border-color:#e8344f; color:#a70d2a; text-decoration:none; }
  .mcv-ffd a.mcv-ffd-pill.cur{ background:#191419; color:#fff; border-color:#191419; }

  .mcv-ffd-finalcta{ background:#0a0a0a; color:#fff; text-align:center; padding:96px 24px 64px; position:relative; overflow:hidden; }
  .mcv-ffd-finalcta .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; }
  .mcv-ffd-finalcta .ring1{ width:480px; height:480px; top:-220px; left:-160px; }
  .mcv-ffd-finalcta .ring2{ width:300px; height:300px; bottom:-180px; right:-90px; }
  .mcv-ffd-finalcta .card{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:24px; padding:56px 40px; max-width:720px; margin:0 auto; position:relative; z-index:2; }
  .mcv-ffd-finalcta h2{ color:#fff; font-size:clamp(24px,3.2vw,34px); max-width:640px; margin:0 auto 14px; }
  .mcv-ffd-finalcta p.sub{ color:rgba(255,255,255,.7); max-width:520px; margin:0 auto 30px; }
  .mcv-ffd-footerbar{ max-width:1180px; margin:56px auto 0; padding-top:28px; border-top:1px solid var(--line-light); position:relative; z-index:2; }
  .mcv-ffd-byline{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.55); border-bottom:1px solid rgba(255,255,255,.12); padding-bottom:16px; margin-bottom:12px; }
  .mcv-ffd-byline strong{ color:#fff; font-weight:600; }
  .mcv-ffd-byline .dotsep{ opacity:.4; }
  .mcv-ffd-footermeta{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-family:'JetBrains Mono',monospace; font-size:11px; color:rgba(255,255,255,.55); }

  @media (max-width:900px){
    .mcv-ffd-herogrid{ grid-template-columns:1fr; }
    .mcv-ffd-statbar .inner{ grid-template-columns:repeat(2,1fr); gap:18px 0; }
    .mcv-ffd-statbar .stat:nth-child(2){ border-right:none; }
    .mcv-ffd-rolegrid{ grid-template-columns:1fr; }
    .mcv-ffd-honestgrid{ grid-template-columns:1fr; }
    .mcv-ffd-faqgrid{ grid-template-columns:1fr; }
    .mcv-ffd-hero h1{ font-size:27px; }
    .mcv-ffd-cta .flex{ flex-direction:column; align-items:flex-start; }
    .mcv-ffd-cardstack{ height:260px; }
    .mcv-ffd-fincard{ width:250px; height:150px; }
  }
  @media (prefers-reduced-motion: reduce){ .mcv-ffd *{ animation:none !important; transition:none !important; } }
  /* --- components used by cost / company / business-model --- */
  .mcv-ffd-pricecard{ background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border:1px solid rgba(232,52,79,.3); border-radius:22px; padding:34px 32px; box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-ffd-pricecard .plan{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#ff8090; margin-bottom:14px; }
  .mcv-ffd-pricecard .amt{ font-family:'JetBrains Mono',monospace; font-size:44px; font-weight:700; color:#fff; line-height:1; }
  .mcv-ffd-pricecard .per{ font-size:13px; color:rgba(255,255,255,.6); margin-top:8px; }
  .mcv-ffd-pricecard ul{ margin:22px 0 0; padding-left:18px; color:rgba(255,255,255,.78); font-size:13.5px; }
  .mcv-ffd-pricecard li{ margin-bottom:8px; line-height:1.5; }
  .mcv-ffd-drivers{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-ffd-driver{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-ffd-driver:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-ffd-driver h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-ffd-driver p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-ffd-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  .mcv-ffd-step{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:24px 22px; }
  .mcv-ffd-step .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:8px; }
  .mcv-ffd-step h3{ font-size:15.5px; margin-bottom:8px; color:#191419; }
  .mcv-ffd-step p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-ffd-checkgrid{ display:grid; grid-template-columns:1fr 1fr; gap:16px 28px; }
  .mcv-ffd-check{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:20px 22px; }
  .mcv-ffd-check h3{ font-size:15px; margin-bottom:8px; color:#191419; }
  .mcv-ffd-check p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-ffd-flags{ display:grid; grid-template-columns:1fr 1fr; gap:14px 28px; }
  .mcv-ffd-flag{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:22px; position:relative; }
  .mcv-ffd-flag::before{ content:'\2715'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; }
  .mcv-ffd-pt{ background:radial-gradient(ellipse 800px 400px at 20% 0%, rgba(232,52,79,.14), transparent), #0a0a0a; color:#fff; padding:92px 0 84px; }
  .mcv-ffd-pt .mcv-ffd-head h2{ color:#fff; }
  .mcv-ffd-pt .mcv-ffd-head p{ color:rgba(255,255,255,.68); }
  .mcv-ffd-pt .mcv-ffd-head .kicker{ color:#ff8090; }
  .mcv-ffd-ptgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  .mcv-ffd-ptcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:18px; padding:26px 24px; }
  .mcv-ffd-ptcard h3{ font-size:15.5px; color:#fff; margin-bottom:10px; }
  .mcv-ffd-ptcard p{ font-size:13.5px; color:rgba(255,255,255,.72); margin:0; }
  .mcv-ffd-ptcard .tag{ display:inline-block; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; border:1px solid rgba(232,52,79,.35); border-radius:100px; padding:3px 10px; margin-bottom:12px; }
  .mcv-ffd-csbox{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:22px; padding:40px 42px; box-shadow:0 12px 34px rgba(0,0,0,.06); }
  .mcv-ffd-csmeta{ display:flex; flex-wrap:wrap; gap:26px; margin:22px 0 26px; padding:20px 0; border-top:1px solid rgba(11,11,16,0.1); border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-ffd-csmeta div{ font-size:13px; color:#6d666d; }
  .mcv-ffd-csmeta strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:18px; color:#191419; margin-bottom:2px; }
  .mcv-ffd-cscols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .mcv-ffd-cscols h4{ font-size:13px; font-family:'JetBrains Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin:0 0 10px; }
  .mcv-ffd-cscols ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-ffd-cscols li{ margin-bottom:8px; line-height:1.5; }
  .mcv-ffd-quote{ margin-top:28px; padding:24px 26px; background:#faf8f8; border-left:3px solid #e8344f; border-radius:0 12px 12px 0; }
  .mcv-ffd-quote p{ font-size:15px; font-style:italic; color:#191419; margin:0 0 10px; }
  .mcv-ffd-quote .who{ font-family:'JetBrains Mono',monospace; font-size:12px; color:#6d666d; font-style:normal; }
  .mcv-ffd-revgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-ffd-revcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-ffd-revcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-ffd-revcard .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; }
  .mcv-ffd-revcard h3{ font-size:16.5px; margin-bottom:10px; color:#191419; }
  .mcv-ffd-revcard p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-ffd-revcard .core{ display:inline-block; margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); border-radius:100px; padding:3px 10px; }
  .mcv-ffd-disclose{ background:#faf8f8; border:1px dashed rgba(11,11,16,0.1); border-radius:14px; padding:26px 28px; max-width:860px; margin:0 auto; }
  .mcv-ffd-disclose h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-ffd-disclose p{ font-size:13.5px; color:#6d666d; margin:0 0 10px; }
  .mcv-ffd-disclose p:last-child{ margin-bottom:0; }
  .mcv-ffd-callout .figs{ display:flex; flex-wrap:wrap; gap:32px; margin-top:22px; padding-top:20px; border-top:1px solid rgba(255,255,255,0.12); }
  .mcv-ffd-callout .figs div{ font-size:12.5px; color:rgba(255,255,255,.65); }
  .mcv-ffd-callout .figs strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:20px; color:#fff; margin-bottom:3px; }
  @media (max-width:900px){
    .mcv-ffd-drivers,.mcv-ffd-steps,.mcv-ffd-checkgrid,.mcv-ffd-flags,.mcv-ffd-ptgrid,.mcv-ffd-cscols,.mcv-ffd-revgrid{ grid-template-columns:1fr; }
    .mcv-ffd-csbox{ padding:28px 24px; }
  }
  /* ===== components ported from the shipped reference bundle (instagram-clone) ===== */
  .mcv-ffd-aside{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 16px 16px 0; padding:32px 36px; }
  .mcv-ffd-aside h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-ffd-aside ul{ margin:0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:16px 32px; }
  .mcv-ffd-aside li{ padding-left:18px; position:relative; font-size:14px; color:#191419; line-height:1.6; }
  .mcv-ffd-aside li::before{ content:''; position:absolute; left:0; top:7px; width:7px; height:7px; background:#e8344f; transform:rotate(45deg); }
  .mcv-ffd-aside li span{ color:#6d666d; display:block; font-size:12.5px; margin-top:2px; }
  .mcv-ffd-flowrow{ display:grid; grid-template-columns:64px 1fr; gap:22px; padding:28px 0; border-bottom:1px solid rgba(11,11,16,0.1); align-items:start; }
  .mcv-ffd-flowrow:last-child{ border-bottom:none; }
  .mcv-ffd-flowrow h3{ font-size:18px; margin-bottom:8px; color:#191419; }
  .mcv-ffd-flowrow p{ color:#6d666d; font-size:14.5px; margin:0; max-width:760px; }
  .mcv-ffd-flownum{ width:56px; height:56px; border-radius:50%; border:1.5px solid rgba(11,11,16,0.1); display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; font-size:16px; }
  .mcv-ffd-icongrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
  .mcv-ffd-iconitem{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:22px 24px; display:flex; gap:14px; align-items:flex-start; box-shadow:0 6px 18px rgba(0,0,0,.05); }
  .mcv-ffd-iconitem h3{ font-size:15px; margin-bottom:6px; color:#191419; }
  .mcv-ffd-iconitem p{ font-size:13px; color:#6d666d; margin:0; }
  .mcv-ffd-icondot{ width:34px; height:34px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); flex:none; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-ffd-steprow{ display:flex; gap:24px; padding:22px 0; border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-ffd-steprow:last-child{ border-bottom:none; }
  .mcv-ffd-step-num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:15px; color:#a70d2a; flex:none; width:90px; padding-top:2px; }
  .mcv-ffd-step-body h3{ font-size:17px; color:#191419; margin-bottom:6px; }
  .mcv-ffd-step-body p{ font-size:14.5px; color:#6d666d; margin:0; }
  .mcv-ffd-trustband{ background:#0a0a0a; color:#fff; padding:96px 0; position:relative; overflow:hidden; }
  .mcv-ffd-trustband .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; width:420px; height:420px; top:-160px; left:-140px; }
  .mcv-ffd-trustband .head{ text-align:center; max-width:720px; margin:0 auto 44px; position:relative; z-index:2; }
  .mcv-ffd-trustband .head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#ff8090; margin-bottom:12px; }
  .mcv-ffd-trustband .head h2{ color:#fff; font-size:clamp(22px,3vw,34px); }
  .mcv-ffd-trustband .head p{ color:rgba(255,255,255,.68); margin-top:14px; }
  /* the band markup uses the prefixed head class, so scope the light colours to it explicitly -
     without this the h2 falls through to .mcv-ffd-head h2 (#191419) and vanishes on the black band */
  .mcv-ffd-trustband .mcv-ffd-head h2{ color:#ffffff; font-size:clamp(22px,3vw,34px); }
  .mcv-ffd-trustband .mcv-ffd-head p{ color:rgba(255,255,255,0.68); }
  .mcv-ffd-trustband .mcv-ffd-head .kicker{ color:#ff8090; }
.mcv-ffd-trustband .mcv-ffd-note{ color:rgba(255,255,255,0.68); }
.mcv-ffd-pt .mcv-ffd-note{ color:rgba(255,255,255,0.68); }
  .mcv-ffd-trustgrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; position:relative; z-index:2; }
  .mcv-ffd-trustcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:16px; padding:26px 22px; }
  .mcv-ffd-trustcard h3{ color:#fff; font-size:15px; margin-bottom:8px; }
  .mcv-ffd-trustcard p{ color:rgba(255,255,255,.68); font-size:13px; margin:0; line-height:1.55; }
  .mcv-ffd-trusticon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.16); border:1px solid rgba(232,52,79,.4); display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
  .mcv-ffd-scorecard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; }
  .mcv-ffd-scorecard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:16px; }
  .mcv-ffd-scorerow{ display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,0.12); }
  .mcv-ffd-scorerow:last-child{ border-bottom:none; }
  .mcv-ffd-scorerow .lbl2{ font-size:12.5px; color:rgba(255,255,255,.75); }
  .mcv-ffd-scorerow .val{ font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:#fff; }
  .mcv-ffd-scorerow .val.good{ color:#ff8090; }
  /* scorecard is a DARK card sitting in a light section. Rows authored as
     **label**text inherit var(--ink) and vanish (1.13:1).
     Give them light ink and stack them; .lbl2/.val two-column rows are untouched. */
  .mcv-ffd-scorerow{ flex-wrap:wrap; }
  .mcv-ffd-scorecard > .mcv-ffd-scorerow > strong{ flex:1 0 100%; color:#ffffff; font-size:14.5px; margin-bottom:4px; }
  .mcv-ffd-scorecard > .mcv-ffd-scorerow > span{ flex:1 0 100%; color:rgba(255,255,255,0.78); font-size:13px; line-height:1.62; }
  .mcv-ffd-cs-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
  .mcv-ffd-cs-top p{ color:#6d666d; font-size:14.5px; max-width:480px; margin:0; }
  .mcv-ffd-cs-meta{ text-align:right; font-size:13.5px; }
  .mcv-ffd-cs-meta strong{ display:block; color:#191419; font-size:14.5px; }
  .mcv-ffd-cs-meta .lbl{ font-family:'JetBrains Mono',monospace; font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:#6d666d; margin:2px 0 12px; }
  .mcv-ffd-cs-stats{ display:grid; grid-template-columns:repeat(3,1fr); border:1px solid rgba(11,11,16,0.1); border-radius:16px; margin-bottom:24px; overflow:hidden; }
  .mcv-ffd-cs-stat{ text-align:center; padding:22px 12px; border-right:1px solid rgba(11,11,16,0.1); }
  .mcv-ffd-cs-stat:last-child{ border-right:none; }
  .mcv-ffd-cs-stat .v{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:26px; color:#a70d2a; }
  .mcv-ffd-cs-stat .l{ font-size:12.5px; color:#6d666d; margin-top:4px; }
  .mcv-ffd-cs-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
  .mcv-ffd-cs-box{ background:#faf8f8; border-radius:14px; padding:22px 24px; }
  .mcv-ffd-cs-box .h{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#6d666d; margin-bottom:12px; }
  .mcv-ffd-cs-box ul{ margin:0; padding:0; list-style:none; display:grid; gap:8px; }
  .mcv-ffd-cs-box li{ padding-left:16px; position:relative; font-size:13.5px; color:#191419; line-height:1.55; }
  .mcv-ffd-cs-box li::before{ content:''; position:absolute; left:0; top:7px; width:6px; height:6px; background:#e8344f; transform:rotate(45deg); }
  .mcv-ffd-cs-quote{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 14px 14px 0; padding:22px 26px; margin-top:16px; display:flex; gap:16px; align-items:flex-start; }
  .mcv-ffd-cs-quote p{ font-style:italic; font-size:15px; color:#191419; margin:0 0 10px; }
  .mcv-ffd-cs-avatar{ width:38px; height:38px; border-radius:50%; background:#a70d2a; color:#fff; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:13px; flex:none; }
  .mcv-ffd-cs-who strong{ display:block; font-size:13.5px; color:#191419; }
  .mcv-ffd-cs-who span{ font-size:12.5px; color:#6d666d; }
  .mcv-ffd-cs-foot{ margin-top:20px; padding-top:16px; border-top:1px solid rgba(11,11,16,0.1); font-size:12.5px; color:#6d666d; }
  .mcv-ffd-mockwrap{ position:relative; }
  .mcv-ffd-chartcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; position:relative; }
  .mcv-ffd-chartcard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:18px; }
  .mcv-ffd-chartcard .mcv-ffd-barrow{ display:flex; align-items:center; gap:14px; height:auto; margin:0 0 14px; }
  .mcv-ffd-chartcard .mcv-ffd-barrow .l{ flex:0 0 140px; font-size:12.5px; line-height:1.35; color:rgba(255,255,255,.78); }
  .mcv-ffd-chartcard .mcv-ffd-barrow>.bar{ flex:1; height:8px; border-radius:999px; background:rgba(255,255,255,.10); overflow:hidden; }
  .mcv-ffd-chartcard .mcv-ffd-barrow>.bar>.mcv-ffd-barcol{ height:8px; border-radius:999px; background:linear-gradient(90deg,#ff8090,#d81b46); }
  .mcv-ffd-chartcard .note{ margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.12); font-size:11.5px; line-height:1.5; color:rgba(255,255,255,.62); }
  .mcv-ffd-seggrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
  .mcv-ffd-segcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:26px 22px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-ffd-segcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-ffd-segcard h3{ color:#191419; font-size:15.5px; margin-bottom:8px; }
  .mcv-ffd-segcard p{ color:#6d666d; font-size:13px; margin:0; line-height:1.55; }
  .mcv-ffd-segicon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:14px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; transition:background .3s; }
  .mcv-ffd-modelgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-ffd-modelcard{ position:relative; background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; overflow:hidden; }
  .mcv-ffd-modelcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-ffd-modelcard .ghost{ position:absolute; top:-4px; right:6px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:64px; color:#000; opacity:.045; line-height:1; }
  .mcv-ffd-modelcard:hover .ghost{ color:#e8344f; opacity:.09; }
  .mcv-ffd-modelcard .stage{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; position:relative; }
  .mcv-ffd-modelcard h3{ font-size:16.5px; margin-bottom:8px; position:relative; color:#191419; }
  .mcv-ffd-modelcard p{ font-size:13.5px; color:#6d666d; margin:0; line-height:1.55; position:relative; }
  .mcv-ffd-streamlist{ display:flex; flex-direction:column; gap:9px; }
  .mcv-ffd-streamrow{ display:flex; align-items:center; gap:12px; padding:9px 12px; border:1px solid rgba(255,255,255,0.12); border-radius:10px; background:rgba(255,255,255,.03); }
  .mcv-ffd-streamrow .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; color:#ff8090; }
  .mcv-ffd-streamrow .s{ font-size:13px; color:#fff; font-weight:600; }
  @media (max-width:900px){
    .mcv-ffd-aside ul{ grid-template-columns:1fr; }
    .mcv-ffd-flowrow{ grid-template-columns:48px 1fr; gap:16px; }
    .mcv-ffd-flownum{ width:44px; height:44px; font-size:14px; }
    .mcv-ffd-icongrid,.mcv-ffd-cs-grid,.mcv-ffd-modelgrid{ grid-template-columns:1fr; }
    .mcv-ffd-trustgrid,.mcv-ffd-seggrid{ grid-template-columns:1fr 1fr; }
    .mcv-ffd-cs-stats{ grid-template-columns:1fr; }
    .mcv-ffd-cs-stat{ border-right:none; border-bottom:1px solid rgba(11,11,16,0.1); }
    .mcv-ffd-cs-stat:last-child{ border-bottom:none; }
    .mcv-ffd-cs-top,.mcv-ffd-steprow{ flex-direction:column; }
    .mcv-ffd-cs-meta{ text-align:left; }
    .mcv-ffd-chartcard .mcv-ffd-barrow{ gap:10px; }
    .mcv-ffd-chartcard .mcv-ffd-barrow .l{ flex:0 0 104px; font-size:11.5px; }
  }
* + .mcv-ffd-callout{ margin-top:22px; }
.mcv-ffd-cta .mcv-ffd-byline,.mcv-ffd-cta .mcv-ffd-footerbar{ color:#ffffff; }
.mcv-ffd-cta .mcv-ffd-byline .dotsep{ opacity:.65; }
.mcv-ffd-trustband .kicker,.mcv-ffd-pt .kicker{ color:var(--crimson-light); }
.mcv-ffd-cta .kicker{ color:#ffffff; }
.mcv-ffd-cta .mcv-ffd-footermeta{ color:#ffffff; }
@media (max-width:560px){ .mcv-ffd-trustgrid,.mcv-ffd-seggrid{ grid-template-columns:1fr; } }

.mcv-ffd-trustgrid{ grid-template-columns:repeat(3,1fr); }
@media (max-width:900px){ .mcv-ffd-trustgrid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .mcv-ffd-trustgrid{ grid-template-columns:1fr; } }
.mcv-ffd-cs-grid{ grid-template-columns:1fr; }

    
    
      
        
          
            [Home](/)/[Farfetch Clone](/farfetch-clone/)/Development Company
          
          Farfetch Clone · Development Company
          
# Farfetch Clone Development Company: What to Check Before You Hire

          
Anyone can show you a luxury storefront. The questions worth asking are what happens when one basket spans four boutiques, who can release a payout on their own, and which authentication controls are actually built. This page covers how we work, a deployment we have already delivered, and the gaps we name in writing rather than leave for a security review to find.

          [Talk to Our Team →](https://miracuves.com/schedule-consultation/)[See Pricing](/farfetch-clone/development-cost/)
          
            **Since 2010** building platforms
            **Deployed** for a live operator
            **6 days** to deploy
          
        
        
          HandoverMonorepo, not access
          
            What Handover Actually Means
            
              01Full monorepo in your repository
              02Prisma schema and migration set
              03No runtime licence, no per-seat fee
              04Your infrastructure, your database
              05Your provider accounts
              06Maker-checker roles assigned
            
          
        
      
    
  

  
    
      
        2010Building Platforms Since
        9,000+Projects Delivered
        6 daysDeployment Window
        100%Source Code Transferred
      
    
  

  
    
      
        Compare
        
## Agency vs Freelancer vs Miracuves

        
Three routes to the same marketplace, and where each one tends to fail on multi-seller settlement specifically.

      
      
        
| What matters | Freelance team | Miracuves ready-made |
| --- | --- | --- |
| Time to live | Four to twelve months, if the scope holds | Six working days |
| Product model | One product per seller, rebuilt later at cost | Master products with competing seller offers |
| Multi-seller orders | The first thing descoped when the budget tightens | Parent and child orders with independent state machines |
| Payout control | A finance person with database access | Maker-checker release, structurally enforced |
| Catalog QA | Usually a spreadsheet and good intentions | A review queue with authenticity and provenance fields |
| Security posture | Rarely documented at all | Named gaps published before you buy |
| Source code | Yours, quality unknown until handover | Full monorepo, 29 services, auditable for due diligence |
| Price behaviour | Hourly, and it moves | $3,399 fixed, quoted before work starts |

      
      
A capable agency will build you a fine marketplace. The comparison above is about time, certainty and what you hold at the end, not about whether good agencies exist.

    
  

  
    
      
        Due Diligence
        
## Questions Worth Asking Any Provider

        
Ask these of us and of anyone else you are considering. The answers are more revealing than a portfolio.

      
      
        01
### What happens when a basket spans four sellers?

If the answer is that the order is split manually afterwards, or that each seller gets a separate checkout, you do not have a marketplace. Ask to see one parent order with four child orders at four different fulfilment states.

        02
### Can one person release a payout alone?

Separation of duty on money movement is the first thing an auditor tests and the hardest thing to retrofit. Ask whether maker-checker is enforced in the data model or is a policy somebody is trusted to follow.

        03
### Can commission vary by category and tier?

A flat percentage does not survive the first negotiation with a high-volume boutique. Ask how a rate is changed for one category without a deployment and without touching every other seller.

        04
### What stands between an upload and a live listing?

In luxury, one counterfeit that reaches a shopper costs more than a QA queue costs to staff. Ask whether authenticity and provenance are structured fields you can filter and audit, or free text.

        05
### Which authentication controls are missing?

Every platform has some. A provider who says none is either not looking or not telling you. Ours are listed in the Platform Trust section below, in writing, before you buy.

        06
### Is there a runtime licence or per-seat fee?

If adding your hundredth boutique costs you more from the vendor, seller growth is a cost story rather than a margin one. Ask for the answer in writing.

        07
### Who holds the provider accounts?

Payments, messaging and search should sit in accounts you own. If the provider holds them, leaving is a migration rather than a decision, and payouts to your sellers depend on their relationship.

        08
### How does a bulk feed fail?

Boutiques will not hand-enter a thousand SKUs. Ask to see job monitoring on an import, because a silent feed failure is discovered when stock sells that does not exist.

        09
### Can I audit the code for due diligence?

If you take investment, someone will read this codebase. Ask whether it is auditable end to end or whether parts arrive as a compiled artefact you cannot inspect.

      
      
We answer all nine on a call, including the ones where the answer is no. The Platform Trust section below covers the most important of them in writing.

    
  

  
    
      
        Process
        
## The Six-Step Development Process

        
What we do, in the order we do it.

      
      
        Step 1 · Day 0
### Scope, supply and commission model

We confirm your market, your category mix, where the first boutiques come from, and how commission should differ by category and seller tier. A luxury marketplace with no supply is a catalog of nothing, and we would rather say so before you pay.

        Step 2 · Days 1 - 2
### Branding across four surfaces

Name, logo, colour scheme and splash on the customer storefront, the seller hub, the admin command centre and the Expo mobile build, with the 58-node taxonomy adjusted to the categories you actually carry.

        Step 3 · Days 3 - 4
### Deploy the services on your infrastructure

The monorepo and its PostgreSQL database go onto infrastructure you control, with payment, messaging and search providers connected using accounts you hold rather than accounts we own on your behalf.

        Step 4 · Day 5
### Commission, regions and settlement roles

Commission rules by category and tier, regional pricing, currency and duty configuration, seller tiers defined, and maker-checker roles assigned so payout preparation and approval sit with different people from the first release.

        Step 5 · Day 6
### Operator walkthrough and handover

Staff accounts created with the right roles, then we run a multi-seller order end to end and release a payout through maker-checker so the finance workflow is understood before it matters. The monorepo lands in your repository.

        Step 6 · Post-launch
### The support window

Sixty days of launch guidance, six months of priority bug fixes and twelve months of updates, weighted deliberately after launch because that is when the first multi-seller returns and disputes arrive.

      
      
Authentication hardening and any custom module run alongside this on their own schedule and are quoted before they start.

    
  

  
    
      
        Warning Signs
        
## Red Flags That Mean Walk Away

      
      
        
### Five answers that should end the conversation

        
**"We will send you a build, not the source."** A marketplace you cannot audit is one you cannot take through technical due diligence, and if you raise money someone will ask to read it.

        
**"Sellers are paid manually at month end."** This means there is no settlement ledger. It works for ten boutiques and collapses at fifty, and by then the reconciliation problem is historical as well as current.

        
**"Commission is a global setting."** A single flat rate across every category and every seller tier will be renegotiated by your largest boutique within the first quarter.

        
**"We host it and manage the payment account."** If the vendor holds the payment relationship your sellers are paid through somebody else's account, and your exit is a migration you have not budgeted for.

        
**An estimate with no named exclusions.** Every real platform has limits. A quote that names none has either not been thought through or is relying on you not asking.

      
      
None of these are hypothetical. They are the patterns operators describe when they arrive having already paid somebody else.

    
  

  
    
      
        Domain
        
## What a Luxury Multi-Brand Marketplace Has to Get Right

        
The parts that decide whether boutiques stay and whether the platform can be audited.

      
      
        **One product, competing offers**Four boutiques selling the same item must attach offers to one canonical product record, each with its own price, condition and stock. Otherwise the catalog fills with near-duplicates and search stops being usable exactly as seller count grows.
        **An order that can split**The parent order divides into a child order per seller, each with an independent fulfilment state machine, so one slow boutique cannot hold three other items hostage and no seller sees another seller's business.
        **Duty resolved before payment**Cross-border luxury without a duty and tax line at checkout produces refused parcels and chargebacks, which costs more than the sale it saved. Address validation and fraud scoring run in the same intent.
        **Commission that can be negotiated**Rules by category and by seller tier, so a premium boutique and a new seller settle differently on the same order, and the ledger records how each figure was reached rather than only the total.
        **Payouts nobody can release alone**Maker-checker on every release, enforced in the model rather than in a policy document. Financial control that is structural is what an audit actually tests.
        **Authenticity as data, not prose**Status, condition and provenance as first-class fields behind a QA queue, because a structured field can be filtered, audited and disputed against, and a free-text note cannot.
      
      
Every one of these ships in the base build and is demonstrable in the live demo. Ask us to open any of them with data in it.

    
  

  
    
    
      
        Platform Trust
        
## Named Gaps, Not Hidden

        
The documented authentication and file-handling gaps, stated here before purchase rather than discovered during a security review.

      
      
        
          01
          
### No MFA or admin step-up

          
There is no multi-factor authentication and no step-up challenge before a sensitive admin action. For a platform where an operator can approve payouts, both belong on the pre-launch list, and both are scoped work rather than base features.

        
        
          02
          
### No refresh tokens or revocation

          
There are no refresh tokens, no token revocation and no silent renew. Sessions behave accordingly, and a compromised token cannot be invalidated centrally until this work is done. Documented, not discovered.

        
        
          03
          
### No signed URLs or virus scanning

          
Downloads are not served through signed URLs and uploads are not virus scanned. On a marketplace where boutiques upload KYB documents and product imagery, both are pre-launch items worth budgeting for.

        
        
          04
          
### Every provider is your account

          
Stripe, PayPal or Adyen, SendGrid, Twilio, Firebase, Algolia and OpenRouter all run on credentials you hold. This is deliberate rather than a gap: it means more setup on day three and it means leaving is a decision rather than a migration.

        
        
          05
          
### Search ships on full-text

          
PostgreSQL full-text search is what ships and it works from day one. Algolia is an upgrade path with the sync adapter already written, on your own account, and it becomes worth doing when catalog size and query volume justify it.

        
        
          06
          
### What is built is real

          
JWT authentication at the gateway with rate limiting, role-based access across customer, boutique, seller and operator, fraud scoring before payment authorization, AML and sanctions screening in the seller lifecycle, and maker-checker payout release. Auth0 enterprise SSO with JWKS validation is available on your own tenant.

        
      
      
If any of these is a blocker for your compliance position, say so on the first call. Most are scoped modules with a known shape, and knowing now is better than finding out during a penetration test.

    
  

  
    
      
        Case Study
        
## Luxury Multi-Brand Marketplace Deployment

        
How an operator launched a regional luxury multi-brand marketplace on the Miracuves Farfetch Clone. Client identity withheld under NDA.

      
      
        
          
            Confidential Deployment
            
### Regional Luxury Multi-Brand Marketplace

            
A regional luxury multi-brand marketplace launched on the Miracuves Farfetch Clone, with boutique onboarding, parent and child orders and maker-checker settlement live from day one.

          
          
            Name withheld under NDAIndiaLuxury retail and multi-brand marketplace
          
          
            **29**Microservices deployed
            **70**Database tables live
            **7 wks**Brief to go-live
          
          
            
**Challenges:** onboarding hundreds of boutiques without a manual KYB backlog; splitting one basket across many sellers without breaking fulfilment; and paying sellers accurately, with maker-checker approval on every release.

            
**Goal:** launch a luxury multi-brand marketplace without building settlement from zero, give boutiques a real seller portal instead of a spreadsheet and an inbox, and make commission and retail media revenue available at launch.

            
**Solution by Miracuves:** the parent and child order model across multiple sellers; commission, retail media and premium seller tiers; regional pricing, currency and locale controls; wishlists, loyalty tiers, concierge and recommendations; all running on twenty-nine independently deployable Node.js services.

          
        
      
      
        
### What the operator said

        
"Settlement governance is what won the boutiques over. They can see exactly what they are owed and when it releases." - HR, Head of Retail, luxury marketplace operator, name withheld under NDA.

      
      
This deployment ran seven weeks from brief to go-live because it included configuration and migration beyond the base package. The six-day figure elsewhere on this site refers to the standard white-label deployment of the platform as demonstrated.

    
  

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            Have you deployed this platform for a real operator?
            Yes. A regional luxury multi-brand marketplace in India launched on this platform with twenty-nine microservices and around seventy database tables live, seven weeks from brief to go-live. The client's identity is withheld under NDA, which is why the case study above names a region and an industry rather than a company.
          
          
            Why did that deployment take seven weeks and not six days?
            Because it included configuration and migration work beyond the standard package: commission structures, regional settings, seller onboarding and catalog migration for a live operator. The six-day figure is the white-label deployment of the platform as demonstrated. We publish both rather than quoting the shorter one and hoping the difference goes unnoticed.
          
          
            What exactly do I own at the end?
            The full monorepo of twenty-nine Node.js services plus the Next.js storefront and admin in TypeScript, the Prisma schema, the migration set and the seed workflow. It is auditable end to end for technical due diligence. There is no runtime licence and no per-seat fee, so your hundredth boutique costs you nothing extra from us.
          
        
        
          
            Will you fix the authentication gaps for us?
            Yes, as scoped work quoted before it starts. MFA, refresh tokens, token revocation, silent renew, admin step-up, signed download URLs and upload virus scanning are the documented items. For a marketplace that moves money on behalf of boutiques these are usually the first thing to schedule after deployment, and we would rather you plan for them than meet them in a penetration test.
          
          
            Who works the catalog QA queue?
            You do. The queue, the authenticity and provenance fields, and the seller lifecycle controls are built and role-scoped. The tooling is ours; the judgement about whether an item is what it claims to be is yours, and in luxury that judgement needs someone who knows the category. It is a real staffing line from your first hundred listings.
          
          
            Can you migrate our existing boutiques and catalog?
            Usually, and the effort depends entirely on what you are bringing. Bulk feed import over CSV and API with job monitoring is built, along with category and attribute mapping. A clean export is straightforward; catalogs spread across spreadsheets with inconsistent attributes are a project of their own and we scope it separately.
          
        
      
    
  

  
    
    
      
        
## Ask us the hard questions first

Bring the nine questions above. We will answer them, including the ones where the answer is no, before anyone talks about a contract.

        [Talk to Our Team](https://miracuves.com/schedule-consultation/)[See Pricing](/farfetch-clone/development-cost/)
      
    
  

  
    
      
        Explore
        
## Explore the Farfetch Clone

      
      
        [Overview](/farfetch-clone/)
        [Features](/farfetch-clone/features/)
        [Development Cost](/farfetch-clone/development-cost/)
        [Development Company](/farfetch-clone/development-company/)
        [Business Model](/farfetch-clone/business-model/)
      
    
  

  
    
    
      
        
## A partner who names the gaps before you buy

        
Six working days to a branded luxury marketplace on your own infrastructure, with the full monorepo in your repository, a deployment already delivered for a live operator, and every documented gap published rather than discovered.

        [Talk to Us →](https://miracuves.com/schedule-consultation/)
      
      
        
          **Written by the Miracuves Product Team**·
          Reviewed for accuracy·
          Last updated **August 24, 2026**
        
        
          Miracuves · Farfetch Clone Solution
          Case study and named gaps transcribed from the live hub, 2026-08-24
