---
title: Talabat Clone Features
description: 
url: https://miracuves.com/talabat-clone/features
date_modified: 2026-09-10
author: miracuves
language: en_US
---

.mcv-tbf{
    --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-tbf *{ box-sizing:border-box; }
  .mcv-tbf h1,.mcv-tbf h2,.mcv-tbf h3{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:800; margin:0; letter-spacing:-0.02em; line-height:1.12; }
  .mcv-tbf p{ margin:0 0 14px; line-height:1.7; color:var(--ink); }
  .mcv-tbf a{ color:var(--crimson-deep); text-decoration:none; }
  .mcv-tbf .mono{ font-family:'JetBrains Mono',monospace; }
  .mcv-tbf-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; position:relative; z-index:2; }
  .mcv-tbf-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-tbf-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-tbf-crumb a{ color:rgba(255,255,255,.62); }
  .mcv-tbf-crumb a:hover{ color:var(--crimson-light); }
  .mcv-tbf-crumb span.sep{ opacity:.5; }
  .mcv-tbf-crumb span.cur{ color:rgba(255,255,255,.75); }

  .mcv-tbf-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-tbf-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--crimson); }

  .mcv-tbf-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-tbf-hero .ring{ position:absolute; border:2px solid rgba(232,52,79,.18); border-radius:50%; pointer-events:none; }
  .mcv-tbf-hero .ring1{ width:560px; height:560px; top:-260px; right:-200px; }
  .mcv-tbf-hero .ring2{ width:340px; height:340px; bottom:-200px; right:120px; border-color:rgba(232,52,79,.1); }
  .mcv-tbf-herogrid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:48px; align-items:center; }
  .mcv-tbf-hero h1{ font-size:clamp(27px,3.9vw,44px); color:#fff; }
  .mcv-tbf-hero h1 em{ font-style:normal; color:#ff8090; }
  .mcv-tbf-hero p.sub{ font-size:16px; color:rgba(255,255,255,.68); max-width:600px; margin:20px 0 30px; }

  .mcv-tbf a.mcv-tbf-btn{ display:inline-flex; align-items:center; gap:8px; border-radius:12px; background:linear-gradient(160deg,#d81b46,#e6223f); 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-tbf a.mcv-tbf-btn:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 14px 36px rgba(232,52,79,.42); text-decoration:none; }
  .mcv-tbf a.mcv-tbf-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-tbf a.mcv-tbf-btn-outline:hover{ background:#fff; color:#191419; text-decoration:none; }

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

  .mcv-tbf-cardstack{ position:relative; height:340px; }
  .mcv-tbf-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-tbf-fincard.c1{ top:0; left:10px; z-index:1; opacity:.5; transform:rotate(-6deg) scale(.92); }
  .mcv-tbf-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-tbf-fincard .brand{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.55); }
  .mcv-tbf-fincard .chip{ width:34px; height:24px; border-radius:5px; background:linear-gradient(135deg,#ff8090,#e8344f); margin:22px 0 18px; }
  .mcv-tbf-fincard .num{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; letter-spacing:.1em; }
  .mcv-tbf-fincard .curr{ position:absolute; bottom:22px; right:22px; font-family:'JetBrains Mono',monospace; font-size:11px; color:#ff8090; }
  .mcv-tbf-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-tbf-float .k2{ font-family:'JetBrains Mono',monospace; font-size:10px; color:#ff8090; text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; }
  .mcv-tbf-float .v{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; font-weight:700; }
  .mcv-tbf-float-1{ top:-10px; right:0; }
  .mcv-tbf-float-2{ bottom:10px; left:0; }

  .mcv-tbf-statbar{ margin-top:-72px; position:relative; z-index:3; }
  .mcv-tbf-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-tbf-statbar .stat{ text-align:center; padding:0 12px; border-right:1px solid var(--line-light); }
  .mcv-tbf-statbar .stat:last-child{ border-right:none; }
  .mcv-tbf-statbar .num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:22px; color:#ff8090; }
  .mcv-tbf-statbar .lbl{ font-size:11.5px; color:rgba(255,255,255,.62); margin-top:6px; line-height:1.4; }

  .mcv-tbf-section{ padding:100px 0 76px; }
  .mcv-tbf-section.paper{ background:#faf8f8; }
  .mcv-tbf-section.tight{ padding-top:76px; }
  .mcv-tbf-head{ text-align:center; max-width:720px; margin:0 auto 48px; }
  .mcv-tbf-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-tbf-head h2{ font-size:clamp(22px,3vw,34px); color:#191419; }
  .mcv-tbf-head p{ color:#6d666d; margin-top:14px; }

  .mcv-tbf-rolegrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-tbf-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-tbf-rolecard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-tbf-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-tbf-rolecard h3{ font-size:17px; margin-bottom:12px; color:#191419; }
  .mcv-tbf-rolecard ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-tbf-rolecard li{ margin-bottom:8px; line-height:1.5; }

  .mcv-tbf-tablewrap{ overflow-x:auto; border-radius:16px; box-shadow:0 12px 34px rgba(0,0,0,.07); border:1px solid var(--line); }
  table.mcv-tbf-table{ border-collapse:collapse; width:100%; min-width:680px; background:#fff; font-size:13.5px; }
  table.mcv-tbf-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-tbf-table td{ padding:14px 16px; border-bottom:1px solid rgba(11,11,16,0.1); vertical-align:top; color:#191419; }
  table.mcv-tbf-table td.hl{ background:rgba(232,52,79,.06); border-top:3px solid #e8344f; font-weight:600; color:#191419; }
  table.mcv-tbf-table th.hl{ background:#e6223f; color:#ffffff; }
  table.mcv-tbf-table tbody tr:hover td{ background:#f4f1f1; color:#191419; }
  table.mcv-tbf-table tbody tr:hover td.hl{ background:rgba(232,52,79,.13); color:#191419; }
  table.mcv-tbf-table tr:last-child td{ border-bottom:none; }
  .mcv-tbf-note{ font-size:12.5px; color:#6d666d; margin-top:12px; }

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

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

  .mcv-tbf-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-tbf-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-tbf-cs-badge .dot{ width:6px; height:6px; border-radius:50%; background:#e8344f; }
  .mcv-tbf-cs-body{ flex:1; min-width:260px; }
  .mcv-tbf-cs-body h3{ font-size:16.5px; margin-bottom:6px; color:#191419; }
  .mcv-tbf-cs-body p{ color:#6d666d; font-size:13.5px; margin:0; max-width:460px; }
  .mcv-tbf a.mcv-tbf-cs-link{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; color:#a70d2a; white-space:nowrap; }

  .mcv-tbf-faqgrid{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; max-width:1000px; margin:0 auto; }
  .mcv-tbf-faq details{ border-bottom:1px solid var(--line); padding:18px 0; }
  .mcv-tbf-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-tbf-faq summary::-webkit-details-marker{ display:none; }
  .mcv-tbf-faq summary::after{ content:'+'; font-family:'JetBrains Mono',monospace; color:#a70d2a; font-size:20px; font-weight:700; flex:none; }
  .mcv-tbf-faq details[open] summary::after{ content:'\2212'; }
  .mcv-tbf-faq .a{ color:#6d666d; font-size:13.5px; margin-top:10px; line-height:1.65; }

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

  .mcv-tbf-explore{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
  .mcv-tbf a.mcv-tbf-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-tbf a.mcv-tbf-pill:hover{ border-color:#e8344f; color:#a70d2a; text-decoration:none; }
  .mcv-tbf a.mcv-tbf-pill.cur{ background:#191419; color:#fff; border-color:#191419; }

  .mcv-tbf-finalcta{ background:#0a0a0a; color:#fff; text-align:center; padding:96px 24px 64px; position:relative; overflow:hidden; }
  .mcv-tbf-finalcta .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; }
  .mcv-tbf-finalcta .ring1{ width:480px; height:480px; top:-220px; left:-160px; }
  .mcv-tbf-finalcta .ring2{ width:300px; height:300px; bottom:-180px; right:-90px; }
  .mcv-tbf-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-tbf-finalcta h2{ color:#fff; font-size:clamp(24px,3.2vw,34px); max-width:640px; margin:0 auto 14px; }
  .mcv-tbf-finalcta p.sub{ color:rgba(255,255,255,.7); max-width:520px; margin:0 auto 30px; }
  .mcv-tbf-footerbar{ max-width:1180px; margin:56px auto 0; padding-top:28px; border-top:1px solid var(--line-light); position:relative; z-index:2; }
  .mcv-tbf-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-tbf-byline strong{ color:#fff; font-weight:600; }
  .mcv-tbf-byline .dotsep{ opacity:.4; }
  .mcv-tbf-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-tbf-herogrid{ grid-template-columns:1fr; }
    .mcv-tbf-statbar .inner{ grid-template-columns:repeat(2,1fr); gap:18px 0; }
    .mcv-tbf-statbar .stat:nth-child(2){ border-right:none; }
    .mcv-tbf-rolegrid{ grid-template-columns:1fr; }
    .mcv-tbf-honestgrid{ grid-template-columns:1fr; }
    .mcv-tbf-faqgrid{ grid-template-columns:1fr; }
    .mcv-tbf-hero h1{ font-size:27px; }
    .mcv-tbf-cta .flex{ flex-direction:column; align-items:flex-start; }
    .mcv-tbf-cardstack{ height:260px; }
    .mcv-tbf-fincard{ width:250px; height:150px; }
  }
  @media (prefers-reduced-motion: reduce){ .mcv-tbf *{ animation:none !important; transition:none !important; } }
  /* --- components used by cost / company / business-model --- */
  .mcv-tbf-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-tbf-pricecard .plan{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#ff8090; margin-bottom:14px; }
  .mcv-tbf-pricecard .amt{ font-family:'JetBrains Mono',monospace; font-size:44px; font-weight:700; color:#fff; line-height:1; }
  .mcv-tbf-pricecard .per{ font-size:13px; color:rgba(255,255,255,.6); margin-top:8px; }
  .mcv-tbf-pricecard ul{ margin:22px 0 0; padding-left:18px; color:rgba(255,255,255,.78); font-size:13.5px; }
  .mcv-tbf-pricecard li{ margin-bottom:8px; line-height:1.5; }
  .mcv-tbf-drivers{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-tbf-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-tbf-driver:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-tbf-driver h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-tbf-driver p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-tbf-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  .mcv-tbf-step{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:24px 22px; }
  .mcv-tbf-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-tbf-step h3{ font-size:15.5px; margin-bottom:8px; color:#191419; }
  .mcv-tbf-step p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-tbf-checkgrid{ display:grid; grid-template-columns:1fr 1fr; gap:16px 28px; }
  .mcv-tbf-check{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:20px 22px; }
  .mcv-tbf-check h3{ font-size:15px; margin-bottom:8px; color:#191419; }
  .mcv-tbf-check p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-tbf-flags{ display:grid; grid-template-columns:1fr 1fr; gap:14px 28px; }
  .mcv-tbf-flag{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:22px; position:relative; }
  .mcv-tbf-flag::before{ content:'\2715'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; }
  .mcv-tbf-pt{ background:radial-gradient(ellipse 800px 400px at 20% 0%, rgba(232,52,79,.14), transparent), #0a0a0a; color:#fff; padding:92px 0 84px; }
  .mcv-tbf-pt .mcv-tbf-head h2{ color:#fff; }
  .mcv-tbf-pt .mcv-tbf-head p{ color:rgba(255,255,255,.68); }
  .mcv-tbf-pt .mcv-tbf-head .kicker{ color:#ff8090; }
  .mcv-tbf-ptgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  .mcv-tbf-ptcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:18px; padding:26px 24px; }
  .mcv-tbf-ptcard h3{ font-size:15.5px; color:#fff; margin-bottom:10px; }
  .mcv-tbf-ptcard p{ font-size:13.5px; color:rgba(255,255,255,.72); margin:0; }
  .mcv-tbf-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-tbf-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-tbf-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-tbf-csmeta div{ font-size:13px; color:#6d666d; }
  .mcv-tbf-csmeta strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:18px; color:#191419; margin-bottom:2px; }
  .mcv-tbf-cscols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .mcv-tbf-cscols h4{ font-size:13px; font-family:'JetBrains Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin:0 0 10px; }
  .mcv-tbf-cscols ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-tbf-cscols li{ margin-bottom:8px; line-height:1.5; }
  .mcv-tbf-quote{ margin-top:28px; padding:24px 26px; background:#faf8f8; border-left:3px solid #e8344f; border-radius:0 12px 12px 0; }
  .mcv-tbf-quote p{ font-size:15px; font-style:italic; color:#191419; margin:0 0 10px; }
  .mcv-tbf-quote .who{ font-family:'JetBrains Mono',monospace; font-size:12px; color:#6d666d; font-style:normal; }
  .mcv-tbf-revgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-tbf-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-tbf-revcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-tbf-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-tbf-revcard h3{ font-size:16.5px; margin-bottom:10px; color:#191419; }
  .mcv-tbf-revcard p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-tbf-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-tbf-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-tbf-disclose h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-tbf-disclose p{ font-size:13.5px; color:#6d666d; margin:0 0 10px; }
  .mcv-tbf-disclose p:last-child{ margin-bottom:0; }
  .mcv-tbf-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-tbf-callout .figs div{ font-size:12.5px; color:rgba(255,255,255,.65); }
  .mcv-tbf-callout .figs strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:20px; color:#fff; margin-bottom:3px; }
  @media (max-width:900px){
    .mcv-tbf-drivers,.mcv-tbf-steps,.mcv-tbf-checkgrid,.mcv-tbf-flags,.mcv-tbf-ptgrid,.mcv-tbf-cscols,.mcv-tbf-revgrid{ grid-template-columns:1fr; }
    .mcv-tbf-csbox{ padding:28px 24px; }
  }
  /* ===== components ported from the shipped reference bundle (instagram-clone) ===== */
  .mcv-tbf-aside{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 16px 16px 0; padding:32px 36px; }
  .mcv-tbf-aside h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-tbf-aside ul{ margin:0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:16px 32px; }
  .mcv-tbf-aside li{ padding-left:18px; position:relative; font-size:14px; color:#191419; line-height:1.6; }
  .mcv-tbf-aside li::before{ content:''; position:absolute; left:0; top:7px; width:7px; height:7px; background:#e8344f; transform:rotate(45deg); }
  .mcv-tbf-aside li span{ color:#6d666d; display:block; font-size:12.5px; margin-top:2px; }
  .mcv-tbf-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-tbf-flowrow:last-child{ border-bottom:none; }
  .mcv-tbf-flowrow h3{ font-size:18px; margin-bottom:8px; color:#191419; }
  .mcv-tbf-flowrow p{ color:#6d666d; font-size:14.5px; margin:0; max-width:760px; }
  .mcv-tbf-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-tbf-icongrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
  .mcv-tbf-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-tbf-iconitem h3{ font-size:15px; margin-bottom:6px; color:#191419; }
  .mcv-tbf-iconitem p{ font-size:13px; color:#6d666d; margin:0; }
  .mcv-tbf-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-tbf-steprow{ display:flex; gap:24px; padding:22px 0; border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-tbf-steprow:last-child{ border-bottom:none; }
  .mcv-tbf-step-num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:15px; color:#a70d2a; flex:none; width:90px; padding-top:2px; }
  .mcv-tbf-step-body h3{ font-size:17px; color:#191419; margin-bottom:6px; }
  .mcv-tbf-step-body p{ font-size:14.5px; color:#6d666d; margin:0; }
  .mcv-tbf-trustband{ background:#0a0a0a; color:#fff; padding:96px 0; position:relative; overflow:hidden; }
  .mcv-tbf-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-tbf-trustband .head{ text-align:center; max-width:720px; margin:0 auto 44px; position:relative; z-index:2; }
  .mcv-tbf-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-tbf-trustband .head h2{ color:#fff; font-size:clamp(22px,3vw,34px); }
  .mcv-tbf-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-tbf-head h2 (#191419) and vanishes on the black band */
  .mcv-tbf-trustband .mcv-tbf-head h2{ color:#ffffff; font-size:clamp(22px,3vw,34px); }
  .mcv-tbf-trustband .mcv-tbf-head p{ color:rgba(255,255,255,0.68); }
  .mcv-tbf-trustband .mcv-tbf-head .kicker{ color:#ff8090; }
.mcv-tbf-trustband .mcv-tbf-note{ color:rgba(255,255,255,0.68); }
.mcv-tbf-pt .mcv-tbf-note{ color:rgba(255,255,255,0.68); }
  .mcv-tbf-trustgrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; position:relative; z-index:2; }
  .mcv-tbf-trustcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:16px; padding:26px 22px; }
  .mcv-tbf-trustcard h3{ color:#fff; font-size:15px; margin-bottom:8px; }
  .mcv-tbf-trustcard p{ color:rgba(255,255,255,.68); font-size:13px; margin:0; line-height:1.55; }
  .mcv-tbf-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-tbf-scorecard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; }
  .mcv-tbf-scorecard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:16px; }
  .mcv-tbf-scorerow{ display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,0.12); }
  .mcv-tbf-scorerow:last-child{ border-bottom:none; }
  .mcv-tbf-scorerow .lbl2{ font-size:12.5px; color:rgba(255,255,255,.75); }
  .mcv-tbf-scorerow .val{ font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:#fff; }
  .mcv-tbf-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-tbf-scorerow{ flex-wrap:wrap; }
  .mcv-tbf-scorecard > .mcv-tbf-scorerow > strong{ flex:1 0 100%; color:#ffffff; font-size:14.5px; margin-bottom:4px; }
  .mcv-tbf-scorecard > .mcv-tbf-scorerow > span{ flex:1 0 100%; color:rgba(255,255,255,0.78); font-size:13px; line-height:1.62; }
  .mcv-tbf-cs-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
  .mcv-tbf-cs-top p{ color:#6d666d; font-size:14.5px; max-width:480px; margin:0; }
  .mcv-tbf-cs-meta{ text-align:right; font-size:13.5px; }
  .mcv-tbf-cs-meta strong{ display:block; color:#191419; font-size:14.5px; }
  .mcv-tbf-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-tbf-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-tbf-cs-stat{ text-align:center; padding:22px 12px; border-right:1px solid rgba(11,11,16,0.1); }
  .mcv-tbf-cs-stat:last-child{ border-right:none; }
  .mcv-tbf-cs-stat .v{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:26px; color:#a70d2a; }
  .mcv-tbf-cs-stat .l{ font-size:12.5px; color:#6d666d; margin-top:4px; }
  .mcv-tbf-cs-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
  .mcv-tbf-cs-box{ background:#faf8f8; border-radius:14px; padding:22px 24px; }
  .mcv-tbf-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-tbf-cs-box ul{ margin:0; padding:0; list-style:none; display:grid; gap:8px; }
  .mcv-tbf-cs-box li{ padding-left:16px; position:relative; font-size:13.5px; color:#191419; line-height:1.55; }
  .mcv-tbf-cs-box li::before{ content:''; position:absolute; left:0; top:7px; width:6px; height:6px; background:#e8344f; transform:rotate(45deg); }
  .mcv-tbf-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-tbf-cs-quote p{ font-style:italic; font-size:15px; color:#191419; margin:0 0 10px; }
  .mcv-tbf-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-tbf-cs-who strong{ display:block; font-size:13.5px; color:#191419; }
  .mcv-tbf-cs-who span{ font-size:12.5px; color:#6d666d; }
  .mcv-tbf-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-tbf-mockwrap{ position:relative; }
  .mcv-tbf-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-tbf-chartcard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:18px; }
  .mcv-tbf-chartcard .mcv-tbf-barrow{ display:flex; align-items:center; gap:14px; height:auto; margin:0 0 14px; }
  .mcv-tbf-chartcard .mcv-tbf-barrow .l{ flex:0 0 140px; font-size:12.5px; line-height:1.35; color:rgba(255,255,255,.78); }
  .mcv-tbf-chartcard .mcv-tbf-barrow>.bar{ flex:1; height:8px; border-radius:999px; background:rgba(255,255,255,.10); overflow:hidden; }
  .mcv-tbf-chartcard .mcv-tbf-barrow>.bar>.mcv-tbf-barcol{ height:8px; border-radius:999px; background:linear-gradient(90deg,#ff8090,#d81b46); }
  .mcv-tbf-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-tbf-seggrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
  .mcv-tbf-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-tbf-segcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-tbf-segcard h3{ color:#191419; font-size:15.5px; margin-bottom:8px; }
  .mcv-tbf-segcard p{ color:#6d666d; font-size:13px; margin:0; line-height:1.55; }
  .mcv-tbf-segcard ul{ margin:12px 0 0; padding-left:17px; }
  .mcv-tbf-segcard li{ color:#6d666d; font-size:12.5px; line-height:1.5; margin-bottom:6px; }
  .mcv-tbf-segcard li:last-child{ margin-bottom:0; }
  .mcv-tbf-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-tbf-modelgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-tbf-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-tbf-modelcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-tbf-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-tbf-modelcard:hover .ghost{ color:#e8344f; opacity:.09; }
  .mcv-tbf-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-tbf-modelcard h3{ font-size:16.5px; margin-bottom:8px; position:relative; color:#191419; }
  .mcv-tbf-modelcard p{ font-size:13.5px; color:#6d666d; margin:0; line-height:1.55; position:relative; }
  .mcv-tbf-streamlist{ display:flex; flex-direction:column; gap:9px; }
  .mcv-tbf-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-tbf-streamrow .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; color:#ff8090; }
  .mcv-tbf-streamrow .s{ font-size:13px; color:#fff; font-weight:600; }
  @media (max-width:900px){
    .mcv-tbf-aside ul{ grid-template-columns:1fr; }
    .mcv-tbf-flowrow{ grid-template-columns:48px 1fr; gap:16px; }
    .mcv-tbf-flownum{ width:44px; height:44px; font-size:14px; }
    .mcv-tbf-icongrid,.mcv-tbf-cs-grid,.mcv-tbf-modelgrid{ grid-template-columns:1fr; }
    .mcv-tbf-trustgrid,.mcv-tbf-seggrid{ grid-template-columns:1fr 1fr; }
    .mcv-tbf-cs-stats{ grid-template-columns:1fr; }
    .mcv-tbf-cs-stat{ border-right:none; border-bottom:1px solid rgba(11,11,16,0.1); }
    .mcv-tbf-cs-stat:last-child{ border-bottom:none; }
    .mcv-tbf-cs-top,.mcv-tbf-steprow{ flex-direction:column; }
    .mcv-tbf-cs-meta{ text-align:left; }
    .mcv-tbf-chartcard .mcv-tbf-barrow{ gap:10px; }
    .mcv-tbf-chartcard .mcv-tbf-barrow .l{ flex:0 0 104px; font-size:11.5px; }
  }
* + .mcv-tbf-callout{ margin-top:22px; }
.mcv-tbf-cta .mcv-tbf-byline,.mcv-tbf-cta .mcv-tbf-footerbar{ color:#ffffff; }
.mcv-tbf-cta .mcv-tbf-byline .dotsep{ opacity:.65; }
.mcv-tbf-trustband .kicker,.mcv-tbf-pt .kicker{ color:var(--crimson-light); }
.mcv-tbf-cta .kicker{ color:#ffffff; }
.mcv-tbf-cta .mcv-tbf-footermeta{ color:#ffffff; }
@media (max-width:560px){ .mcv-tbf-trustgrid,.mcv-tbf-seggrid{ grid-template-columns:1fr; } }

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

    
    
      
        
          
            [Home](/)/[Talabat Clone](/talabat-clone/)/Features
          
          Talabat Clone · Features
          
# Talabat Clone Features: A Market Is a Zone, Not a Deployment

          
Most delivery platforms treat a country as a fork. Here a market is a polygon drawn on a map carrying its own charges, its own cash ceiling, its own subset of the thirteen gateways, its own language and its own notification wording. Cairo, Riyadh and Dubai can run different rules on the same codebase, and adding the fourth is an afternoon in the console rather than a second engineering programme.

          [Request a Live Demo →](https://miracuves.com/schedule-consultation/)[Full Overview](/talabat-clone/)
          
            **RTL** ships in the storefront
            **13** gateways, mixed per market
            **6 days** to deploy
          
        
        
          A second countryA polygon and a gateway
          
            What a Zone Carries
            
              01Its own coverage geometry
              02Its own delivery charges
              03Its own cash ceiling
              04Its own payment methods
              05Its own notification topics
              06The riders allowed to serve it
            
          
        
      
    
  

  
    
      
        1Codebase, Many Markets
        13Gateway Options
        120Settings Keys
        3Store Listings per Market
      
    
  

  
    
      
        By Role
        
## Feature Set by Role

        
Five surfaces over one Laravel backend, each of them aware of which market it is currently in.

      
      
        
          01
          
### The Customer

          
They set an address and get only the restaurants that deliver there, with the charge that applies in that area rather than a national figure. Search by dish, restaurant or cuisine with filters for rating, price and delivery time, then order for delivery, collection or a table, paying by card, wallet or cash depending on what their market offers.

        
        
          02
          
### The Restaurant

          
Menus, variations and add-ons edited by the restaurant itself, its own opening hours and holiday schedules, items marked sold out in one tap, staff logins beneath the owner, and its own earnings and payout history. A restaurant in one market never sees or affects a restaurant in another.

        
        
          03
          
### The Cash Rail

          
Cash on delivery treated as a first-class payment method rather than a fallback, because in much of this region it is what makes a first order possible at all. Ceilings are set per zone and per delivery partner, and what was collected is reconciled against what was expected instead of assumed.

        
        
          04
          
### The Delivery Partner

          
Assigned orders within their own zone, navigation to pickup and drop-off, proof of delivery at the door, and a running view of earnings and the cash they are carrying against their limit. Partners are filtered by zone before assignment, so dispatch cost stays bound to the area rather than to the size of your fleet.

        
        
          05
          
### The Country Manager

          
Console roles scoped so a manager reaches their own market and nothing beyond it. They draw coverage, set the charges, choose which gateways their customers see, edit the notification wording in their own language, and watch dispatch and cycle time for the area they are accountable for.

        
        
          06
          
### The Group Finance Desk

          
Scheduled disbursement across every market, computed from what was actually charged at the time, with overlap locks so a slow run never pays twice. Sales, commission, payout and tax reports export per market or across the estate, and a rate changed in one country leaves every other country's history untouched.

        
      
      
Staff accounts carry granular module permissions on top of market scope, so support sees orders, finance sees payouts, and nobody reaches everything by default.

    
  

  
    
      
        Compare
        
## Clone vs Generic Script vs a Fork per Country

        
Most routes to a multi-market delivery platform hold up until the second country.

      
      
        
| What decides it | Miracuves Talabat Clone | A deployment per country |
| --- | --- | --- |
| Opening a new market | Draw a polygon, set its charges | Another install, another upgrade path |
| Different payment mix per country | Enable a subset of thirteen per zone | Whatever each fork happened to configure |
| Arabic and right-to-left | In the storefront build already | Retrofitted, usually badly, per fork |
| Cash on delivery | Ceilings per zone and per partner, reconciled | A checkbox, with exposure nobody measures |
| Changing a rule everywhere | One settings key, one deployment | The same change made three times |
| Group-level reporting | One schema, so the estate adds up | Three databases and a spreadsheet |
| App store presence | A listing per market from one codebase | Separate codebases drifting apart |
| Source code | Yours outright, no per-order royalty | Often limited, sometimes encrypted |

      
      
Talabat itself is the reference for what this category looks like in the region; it is not a product you can buy or self-host. The useful comparison is the second column against the third, and against a custom build, which is covered on the [Development Cost](/talabat-clone/development-cost/) page.

    
  

  
    
      
        End to End
        
## How It Works, End to End

        
Seven stages, each one aware of which market the order belongs to.

      
      
        Step 1
### The address decides the market

Coverage resolves from zone polygons rather than from a city field on a form. Which restaurants appear, what delivery costs, which payment methods show at checkout and which riders can be assigned all follow from the geometry the customer is standing inside.

        Step 2
### They read it in their own language

The storefront runs on Next.js with MUI and Redux Toolkit carrying internationalization and right-to-left support in the build. Push, mail and SMS wording lives in editable templates keyed by message and user type, so an Arabic-first market is a language pack and a content pass rather than a second front end.

        Step 3
### They build an order

Sizes, crusts, toppings, extras and allergen notes are modelled as variations rather than separate products, with daily stock counters and one-tap sold-out. The same catalogue machinery carries groceries, pharmacy lines and parcels when a market wants more than restaurants.

        Step 4
### They pay the way their market pays

Thirteen gateways ship, and which subset a market offers is a setting. A country where cards dominate and a country where cash does can run side by side, with wallets and operator-defined offline methods alongside. Split tender is recorded as separate payment legs rather than one blended total.

        Step 5
### Cash is counted, not assumed

Where the order is cash, a ceiling applies per zone and per delivery partner, and a partner over their limit stops being assigned cash orders until they settle. Collected cash is reconciled against what was expected, so exposure is a number on a screen while it is still small.

        Step 6
### The restaurant and the rider work it

The order lands on the store board, is accepted and prepared, and each transition writes its own named timestamp. Delivery partners are filtered by zone before assignment, follow navigation to both ends and close the job with proof of delivery at the door.

        Step 7
### The market settles on its own terms

Commission percentage and discount split are frozen onto the transaction row, and item revenue reads the order line rather than the current menu price. Disbursement runs on your cadence with overlap locks, and a rate you change in one country next month leaves every completed order in every country exactly as it was.

      
      
Offers, loyalty points, wallet credit and campaigns run alongside the whole loop, and a campaign can be scoped to a single market rather than fired across the estate.

    
  

  
    
      
        Justified
        
## Every Feature Earns Its Place

        
Each row is here because a multi-market operator stops working without it, not because a competitor lists it.

      
      
        
| Module | Why it is in the base build |
| --- | --- |
| Zones as coverage geometry | A city stored as a string cannot tell you whether an address is inside your delivery area. A polygon can, and it is what makes a customer outside the map unable to place an order you would lose money carrying. |
| Payment methods per market | The rail that works in Cairo is not the rail that works in Kuala Lumpur. Enabling a subset of the thirteen per zone is what lets one platform trade in both without either market seeing a checkout full of options it cannot use. |
| Cash ceilings and reconciliation | Where card penetration is low, cash is the majority of orders rather than an edge case. Limits per zone and per partner, checked against what was actually collected, is the difference between an operating model and an unmeasured liability. |
| Right-to-left in the storefront | Retrofitting right-to-left after launch touches every layout decision already made. Shipping it in the build is the reason an Arabic-first market costs a content pass instead of a rebuild. |
| Notification templates as data | Every market reads in its own language and its own tone. Wording held as editable templates keyed by message and user type means a translation is admin work rather than a release. |
| Commission frozen at settlement | A group operating in four countries changes rates constantly. Freezing the percentage onto the transaction row is what stops one market's pricing decision rewriting another market's closed quarter. |
| Overlap locks on payout runs | Disbursement across an estate touches every restaurant and rider at once. A lock is the difference between a slow run and paying an entire country twice. |
| Market-scoped staff access | A country manager needs their market and no more. Console roles scoped that way are what let you hire locally without handing every new manager the whole group's payouts. |

      
      
Three additional Laravel modules sit beside the core and matter differently across an estate: tax computed per order and exported per market, an ordering assistant, and a short-video feed whose content can be scoped to the country it was made for.

    
  

  
    
      
        Stack
        
## The Technology Behind the Features

        
Conventional and easy to hire for in every market you are likely to operate in.

      
      
        **Application core**A Laravel 12 backend on PHP 8.2 or later with MySQL and Passport, whose schema history runs to 378 migrations in strict date order across roughly 300 tables, with 136 Eloquent models spread over eleven business domains and pricing and delivery-fee helpers held in one seam, so a rule that varies by market has exactly one place to live.
        **Surfaces and routing**326 route definitions on API v1 with v2 reserved for update endpoints, 764 admin console routes behind role and module gates, 258 store panel routes under plan entitlements, and 33 server-rendered storefront pages, with separate middleware per surface so a token issued to one client cannot reach another.
        **Storefront and language**Next.js 15 and React 18 on MUI and Redux Toolkit with internationalization and right-to-left support in the build across 33 indexable routes, so the web surface a new market lands on is a content and translation exercise rather than a second application to maintain.
        **Three mobile applications**Three independent Flutter builds on GetX, each with its own permissions and its own release path, which is what makes a store listing per market possible from one shared codebase: 727 Dart files in 36 modules for customers, 503 across 29 for restaurants and 234 across 17 for delivery partners.
        **Money across markets**Thirteen gateways plus wallet, cash and offline rails with live and test credential sets per gateway switched by mode, commission and discount split frozen at settlement, split tender written as separate payment legs, scheduled disbursement with overlap locks, and a tax module computing per order and exporting.
        **Realtime and configuration**Firebase Cloud Messaging on HTTP v1 with per-project service-account authentication and zone-scoped topics so a send reaches one market, a Pusher-compatible websocket server with Laravel Echo, in-order chat between all three parties, and roughly 120 named settings keys read at request time rather than compiled in.
      
      
Every business rule lives in the one Laravel application, with the five surfaces sitting over a single versioned API. That means one deploy, one schema and one set of rules across every country, which is exactly what a fork per market gives away.

    
  

  
    
    
      
        Honest Readiness
        
## What Is Not Included in the Base Package

        
A fixed price only means something if the boundary around it is stated, and on a multi-market build two of these matter more than the rest.

      
      
        
          01
          
### A zone is not a legal entity

          
The platform models markets, not companies. If your Egyptian operation must invoice as an Egyptian entity with its own tax registration and its own numbering, that is a corporate structure question the software does not answer, and it is scoped work rather than a settings tab.

        
        
          02
          
### Balances in several currencies

          
Pricing and collection per market are handled. Holding operator or vendor balances in more than one currency at once, and reconciling movements between them, is a genuine extension rather than a configuration choice, and it is the first thing to raise if your group settles centrally.

        
        
          03
          
### Hardening before you go live

          
The documentation names its own gaps: the platform ships in test mode with one-time passcodes exposed for testing, cross-origin rules permissive, and transport and frame headers not emitted. Switching to live mode, narrowing origins to your domains and rotating credentials is a pre-launch pass, quoted separately.

        
        
          04
          
### Somebody else's riders

          
The delivery partner app assumes you run your own fleet. In a country where you would rather not, connecting a third-party courier means mapping their states onto ours and handling their callbacks, which is integration work shaped by whatever API that company publishes.

        
        
          05
          
### A listing per country, maintained

          
The three Flutter applications build for iOS and Android from the source you receive. Signing them, and especially maintaining a separate store listing in every market with its own review cycles and its own metadata, is ongoing work outside a six-day deployment.

        
        
          06
          
### What is built is real

          
Zone geometry with per-market charges, cash ceilings and payment mixes, right-to-left in the storefront, notification templates per language, commission frozen at settlement, disbursement with overlap locks, market-scoped staff roles, and a security posture published against OWASP categories rather than asserted.

        
      
      
Also outside the build: single sign-on and a second factor for console staff, feeding order and payout rows into your own data warehouse, and standing behind an external assessment. Each is named here rather than discovered later, and each is quoted before it starts.

    
  

  
    
      
        
          Development Company
          
### See how Miracuves compares to agencies and freelancers

          
The deployment process, the nine questions worth asking anyone bidding on a multi-market build, the red flags, and the Flyereats engagement we delivered in 2025 - on the Development Company page.

        
        [See the comparison →](/talabat-clone/development-company/)
      
    
  

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            How does one platform run several countries?
            Through zones, and this is the design decision that decides everything else. A zone is a polygon drawn on a map carrying its own coverage, its own delivery charges, its own cash-on-delivery ceiling, its own enabled payment methods and its own notification topics. Which restaurants a customer sees, which riders can be assigned and which staff can act on an order all follow from the zone the order belongs to. A second market is another polygon and a gateway choice, not another deployment.
          
          
            Is Arabic and right-to-left actually supported?
            Yes, and it is worth checking against any vendor claiming it, because retrofitting right-to-left after launch touches every layout decision already made. The storefront runs on MUI and Redux Toolkit with internationalization and right-to-left support in the build. Alongside that, push, mail and SMS wording lives in editable templates keyed by message and user type, so an Arabic-first market is a language pack and a content pass rather than a second front end.
          
          
            How is cash on delivery handled?
            As a first-class rail rather than a tolerated fallback, because in much of this region it is what makes a first order possible at all. Each zone carries its own ceiling, and each delivery partner carries their own limit. A partner over their limit stops being assigned cash orders until they settle, and collected cash is reconciled against what was expected rather than assumed. That reconciliation is what keeps exposure visible while it is still small.
          
        
        
          
            Can different markets offer different payment methods?
            Yes, and this is why thirteen gateways ship rather than one. Stripe, PayPal, Razorpay, Paystack, Flutterwave, Paytm, PayTabs, MercadoPago, Paymob, SenangPay, SSLCommerz, LiqPay and bKash are all in the codebase, and which subset a market offers is a setting. Alongside them sit the customer wallet, cash on delivery and operator-defined offline methods with a proof-and-approval workflow. Checkout reads the active methods from configuration rather than hardcoding a list.
          
          
            Do I need a separate app listing in each country?
            You can have one, and for most multi-market operators you want one. The customer, restaurant and delivery builds are three separate Flutter applications with their own permissions and release paths, so publishing a listing per market is possible from the one shared codebase rather than requiring a fork. What is not included is doing that for you: signing the builds and maintaining separate listings with their own review cycles is ongoing work outside the six-day deployment.
          
          
            Can one market sell groceries while another sells only food?
            Yes, because a vertical is a configuration decision in the same way a market is. Restaurants are the vertical the catalogue was shaped around, but variation option stock, add-on groups, attributes, allergens, tags and daily stock counters carry groceries, quick commerce, pharmacy lines and courier parcels equally well. Since charges, categories and the storefront copy are all zone-scoped, one country can trade as a grocery platform while the country next door stays restaurants only, on the same deployment.
          
        
      
    
  

  
    
    
      
        
## Set an address and watch the market resolve

On the live demo, change the delivery address and watch coverage, charges, restaurant list and payment methods all change with it, then open the same order in the console.

        [Request a Live Demo](https://miracuves.com/schedule-consultation/)[Full Overview](/talabat-clone/)
      
    
  

  
    
      
        Explore
        
## Explore the Talabat Clone

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

  
    
    
      
        
## One codebase. As many markets as you can staff.

        
Customer, restaurant and delivery apps plus your console over one Laravel backend, with every market's charges, cash rules, gateways and language held as configuration you control.

        [Talk to Us →](https://miracuves.com/schedule-consultation/)
      
      
        
          **Written by the Miracuves Product Team**·
          Reviewed for accuracy·
          Last updated **September 10, 2026**
        
        
          Miracuves · Talabat Clone Solution
          Feature set, stack and stated limitations cross-verified against the hub, 2026-09-10
        
      
    
  

				
				
				
				
						
					
			
						
				
					
  /* MIRACUVES - TRADEMARK / NON-AFFILIATION NOTICE (v3).
     Scoped under .mcv-tmn so it cannot collide with the hub connector (mcv-hubx-, mcv-hubxa-)
     or any block above it. Always the last block on the page, immediately before the footer.
     Structure is deliberate: one plain-language lead people actually read, then the three
     supporting positions split out so each is scannable rather than buried in a paragraph.
     Fonts are declared but not loaded: pages carrying the connector already have them, and the
     fallbacks are deliberate so this block never adds a render-blocking request. */
  .mcv-tmn{ font-family:'Plus Jakarta Sans',Arial,sans-serif; color:#191419; margin:0; padding:0; }
  .mcv-tmn *{ box-sizing:border-box; }
  .mcv-tmn-band{ background:#ffffff; padding:8px 0 76px; }
  .mcv-tmn-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; }
  .mcv-tmn-box{ background:#faf8f8; border:1px solid rgba(11,11,16,0.13); border-left:4px solid #a70d2a; border-radius:12px; padding:34px 38px; box-shadow:0 1px 2px rgba(25,20,25,0.04), 0 10px 30px rgba(25,20,25,0.05); }
  .mcv-tmn-head{ display:flex; align-items:center; gap:11px; margin:0 0 18px; }
  .mcv-tmn-dot{ width:8px; height:8px; background:#a70d2a; transform:rotate(45deg); flex:0 0 auto; }
  .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:13px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:#a70d2a; }
  .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ margin:0 0 24px; font-size:20px; line-height:1.5; font-weight:600; color:#191419; max-width:56ch; letter-spacing:-.01em; }
  .mcv-tmn .mcv-tmn-box b.mcv-tmn-brand{ color:#a70d2a; font-weight:700; }
  .mcv-tmn-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px 36px; padding-top:24px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-col span.mcv-tmn-lbl{ display:block; font-family:'JetBrains Mono',ui-monospace,monospace; font-size:10.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#8a8085; margin:0 0 8px; }
  .mcv-tmn .mcv-tmn-col p{ margin:0; font-size:14px; line-height:1.7; color:#453d42; }
  .mcv-tmn-foot{ margin-top:26px; padding-top:18px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-foot a{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:12px; font-weight:600; letter-spacing:.04em; color:#a70d2a; text-decoration:none; border-bottom:1px solid rgba(167,13,42,0.32); }
  .mcv-tmn .mcv-tmn-foot a:hover{ border-bottom-color:#a70d2a; }
  @media (max-width:900px){
    .mcv-tmn-cols{ grid-template-columns:1fr; gap:22px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:18px; }
  }
  @media (max-width:600px){
    .mcv-tmn-band{ padding:4px 0 48px; }
    .mcv-tmn-box{ padding:26px 22px; border-radius:10px; border-left-width:3px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:17px; line-height:1.45; margin-bottom:20px; }
    .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-size:12px; letter-spacing:.16em; }
  }

  
    
      
        Disclaimer
        
Miracuves is an independent software development company. We are not affiliated with, connected to, sponsored by, or endorsed by **Talabat**.

        
          
            Why this name
            
“**Talabat** Clone” is used descriptively. It is how the software industry refers to building a platform with functionality similar to Talabat, and how clients search for it.

          
          
            Who built this
            
The entire design and codebase is built by our own team. The product contains no code, design, graphics, or content originating from the Talabat website or applications.

          
          
            Trademarks
            
**Talabat** and all other third-party names and marks are the property of their respective owners, referenced here solely to describe the category of software offered.

          
        
        [Read our full Legal Notice & Disclaimer →](/disclaimer/)
