---
title: 9flats Clone Features
description: 
url: https://miracuves.com/9flats-clone/features
date_modified: 2026-08-20
author: miracuves
language: en_US
---

9flats Clone Features - Host-First Short-Stay Marketplace | Miracuves

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

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

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

  .mcv-nff a.mcv-nff-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-nff a.mcv-nff-btn:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 14px 36px rgba(232,52,79,.42); text-decoration:none; }
  .mcv-nff a.mcv-nff-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-nff a.mcv-nff-btn-outline:hover{ background:#fff; color:#191419; text-decoration:none; }

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

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

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

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

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

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

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

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

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

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

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

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

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

  
    
    
      
        
          
            [Home](/)/[9flats Clone](/9flats-clone/)/Features
          
          9flats Clone · Features
          
# 9flats Clone Features: Built Around the Host

          
A short-stay marketplace lives or dies on whether hosts stay. Onboarding, calendars, pricing rules, booking rules and payouts are the spine of this platform, and guests search and book against them. Here is every capability, grouped by who touches it.

          [Request a Live Demo →](/9flats-clone/)[See Pricing](/9flats-clone/development-cost/)
          
            **Host-first** by design
            **4** surfaces, one API
            **6 days** to deploy
          
        
        
          CommissionNever retroactive
          
            The Host Spine
            
              01Listing & onboarding
              02Calendar & availability
              03Pricing rules
              04Booking rules
              05Earnings & payouts
              06Six more types, switched off
            
          
        
      
    
  

  
    
      
        20+Operator Admin Modules
        40+Database Tables Across All Domains
        6Payment Gateways Pre-Integrated
        15Languages Pre-Configured
      
    
  

  
    
      
        By Role
        
## Feature Set by Role

        
Every capability grouped by who actually touches it - the host listing and getting paid, the guest booking against their calendar, and the operator approving, moderating and settling.

      
      
        
          H
          
### Host Console

          
- Rich property profiles with gallery and video
- Multiple room types with independent pricing
- Occupancy limits and bed configuration per room
- Seasonal and date-based rate adjustment
- Length-of-stay discounts and extra guest charges
- Minimum and maximum stay, advance booking window
- Cleaning fees and security deposits as extras
- Earnings net of commission, payout requests

        
        
          G
          
### Guest App

          
- Search by location, dates, guests, price and amenities
- Autocomplete on locations and listings, plus map view
- Sort by price, rating or distance
- Star rating, check-in windows and house rules
- Partial payment for deposit-based bookings
- Balance reminders before arrival, invoice generation
- Direct messaging with hosts, read receipts, file sharing
- Reviews, wishlists and booking history

        
        
          O
          
### Operator Admin

          
- More than twenty admin modules
- Host approval and listing moderation
- Granular role and permission system
- Commission set globally or per host
- Coupons with usage limits and minimum totals
- Payout queue with review and completion
- Featured listing placement sold as promotion
- Six further service types, switched on when you want them

        
      
    
  

  
    
      
        Compare
        
## 9flats vs Miracuves Clone vs Building From Scratch

        
The same capability, three different paths - weighted toward what a host-led operator actually needs.

      
      
        
| Capability | Original 9flats | Miracuves Clone | Build From Scratch |
| --- | --- | --- | --- |
| Apartment and private-room inventory | Yes - the core product | Room types with independent pricing, occupancy and bed config | The part everyone starts with |
| Host onboarding and approval | Yes | Application, moderation queue and per-host commission | Commonly an afterthought, then rebuilt |
| Calendar integrity | Yes | Validated at request time, room-level sync inside a property | Cached availability flags are how double-bookings happen |
| Pricing rules | Yes | Seasonal rates, length-of-stay discounts, extra guest charges, coupons | Where totals start disagreeing between screens |
| Host payouts | Handled by 9flats | Earnings net of commission, host-requested, operator-reviewed | The line item most underestimated |
| Commission control | Set by the platform | Set by you, globally or per host, stored on each booking | Retrospective changes corrupt historical payouts |
| Other inventory types | Stays only | Six more ship switched off - cars, tours, boats, events, flights, spaces | A second booking model per type |
| Languages | European focus | Fifteen pre-configured, per-entity content, RTL for Arabic and Hebrew | Interface strings only, then a retrofit |
| Source code ownership | N/A | Full Laravel 10 source, no encrypted files | Full ownership (you are building it) |
| Price | N/A | $2,499 one-time | Six figures and a year, typically |

      
      
The row worth dwelling on is the last inventory one. You can launch as a pure stays marketplace and enable tours or mobility later from the admin, without a rebuild, because all seven types share one booking, payment and payout path.

    
  

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

        
Follow a host from signup to payout - the path that decides whether they list a second property.

      
      
        
          01
          
### Onboard and list

A host applies, you approve them in the moderation queue, and they build a listing with gallery, video, room types, occupancy limits, bed configuration, house rules and check-in windows. Commission can be set for that host specifically rather than globally, which is how you give anchor supply a better rate without repricing the marketplace.

        
        
          02
          
### Set the rules, not just the price

Seasonal and date-based rates, length-of-stay discounts, extra guest charges, cleaning fees and security deposits, plus minimum and maximum stay and an advance booking window. These are the levers a serious host expects, and their absence is the usual reason a host goes back to the incumbent.

        
        
          03
          
### The calendar holds

Availability is validated at request time against the per-service date tables and existing bookings rather than a cached flag, and room-level synchronization prevents a clash inside a single property. Where you also sell through OTAs, iCal export keeps external calendars in step.

        
        
          04
          
### Guest books and pays

The total resolves once through the pricing engine, any coupon is checked against its usage limit and minimum, and payment runs through one of six gateways or the internal wallet - in full, or as a deposit with an automatic balance reminder before arrival. No card number reaches your database.

        
        
          05
          
### The host gets paid

Commission is written onto the booking at the moment it is made. Earnings accumulate net of that stored rate, the host requests a payout from their dashboard, and you review and complete it in the payout queue. Raising your commission later affects future bookings only and never rewrites what a host already earned.

        
      
      
Step five is the one hosts talk to each other about. A platform that recalculates historical earnings when the operator changes a rate loses its supply base quickly, and it is not recoverable.

    
  

  
    
      
        Rationale
        
## Every Feature Earns Its Place

        
Nothing here is on the list because it demos well. Each capability exists because leaving it out costs you hosts.

      
      
        
| Capability | Why it is not optional |
| --- | --- |
| Commission stored on the booking | Because a rate looked up at payout time means raising your commission silently re-prices every historical booking, and no host will trust your reporting again. |
| Per-host commission | Because your first twenty hosts are worth more than your hundredth, and you need a way to reward them that does not reprice the whole marketplace. |
| Room-level synchronization | Because a property with four room types is four inventories, and a clash inside one property is invisible to a property-level check. |
| Availability checked at request time | Because a cached availability flag is how two guests book the same room, and the host is the one who has to turn someone away. |
| Seasonal and length-of-stay pricing | Because a host who cannot price a peak week or reward a longer booking is being asked to earn less than they do elsewhere. |
| Deposits and partial payment | Because deposit-based bookings are normal in short-stay, and demanding the full amount up front loses both hosts and guests. |
| Host payout queue | Because money moving to a host should have a deliberate, reviewable step, and because a refund after a payout is the question every operator eventually faces. |
| Per-entity translation | Because a localised shell around listings nobody in that market can read converts nothing, and European city markets are multilingual by default. |
| Magic-byte upload inspection | Because hosts upload property documents and photos constantly, and an extension check trusts a filename the uploader controls. |

      
    
  

  
    
      
        
## The Technology Behind the Features

        
A deliberately mainstream stack: PHP 8.1+ on Laravel 10 as a modular monolith with more than twenty domain modules, Eloquent ORM with parameterized queries throughout, and Sanctum tokens plus JWT for API authentication. Data sits in MySQL 8 or MariaDB across 40+ tables, with a polymorphic booking model spanning all seven service types, composite indexes on the polymorphic pairs and full-text indexes on searchable content. The public marketplace is Blade with Vue.js components in the admin surfaces, mobile is Flutter for Android and iOS from one codebase consuming the same REST API, and realtime messaging runs on Pusher with Chatify. Redis handles cache, session and queue drivers with workers under Supervisor, and media goes to S3 or GCS behind Nginx.

        
          **Laravel 10**PHP 8.1+, modular monolith
          **40+**MySQL tables
          **Flutter**Android and iOS, one codebase
          **Redis**Cache, sessions, queues
        
      
      
None of this is exotic, and that is the point: any competent Laravel developer can maintain it, so you are not dependent on us to keep it running.

    
  

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

        
Everything above is in the base platform and demonstrable in the live demo. These are not, and we would rather you knew before you bought.

      
      
        
### Stated against the feature, not implied away

        
- **Two-way channel manager**An add-on, not base. iCal export ships for one-way calendar sync.
- **Dynamic pricing**An add-on rather than a shipped feature.
- **Local payment rails beyond the six**A customization, though gateways sit behind a common interface.
- **Custom OTA or PMS integrations**Scoped and quoted separately.
- **ISO 27001**We do not hold a certificate and do not claim one.
- **Merchant accounts**Each gateway you enable needs your own account and approval.
- **Listing content**Photography, descriptions and per-locale copy are yours to supply.
- **Custom work beyond the base**Quoted at 2 to 8 weeks depending on scope.

      
      
Where a control is configuration rather than shipped, the security documentation says so plainly rather than presenting a clean-looking table - see the Platform Trust section on the [Development Company](/9flats-clone/development-company/) page.

    
  

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

          
The deployment process, a named client deployment in Italy, and what to check before you hire anyone - on the Development Company page.

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

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            Can I launch as a stays-only marketplace?
            Yes, and most operators do. Six further service types ship switched off in the admin, which removes them from search, navigation and the host console entirely, so your platform reads as a pure short-stay marketplace. Enabling one later needs no rebuild because they all share the same booking, payment and payout path.
          
          
            Can I change the commission rate later?
            Yes, globally or per host, as a percentage or a fixed amount. The rate is written onto each booking at the moment it is made, so changing it affects future bookings only and never rewrites what a host already earned. That is what keeps historical reporting and payout records defensible.
          
          
            How does the platform stop double-booking?
            Availability is validated at request time against the per-service date tables and existing bookings, not read from a cached flag, and room-level synchronization prevents a clash inside a single property. Where you also sell through OTAs, iCal export keeps external calendars in step, and a two-way channel manager is available as an add-on.
          
        
        
          
            How do host payouts work?
            Host earnings accumulate net of commission and fees, calculated per booking at the rate stored on that booking. The host requests a payout from their dashboard, you review it in the payout queue and mark it complete once the transfer is made. Bank transfer and PayPal are supported out of the box.
          
          
            Which payment gateways are included?
            Six ship pre-integrated: Stripe, PayPal, PayStack for African markets, Payrexx for European methods, an offline bank transfer flow with manual admin confirmation, and the platform wallet. Additional local rails are a customization, and because gateways sit behind a common interface, adding one does not disturb the others.
          
          
            Can I run this in more than one language?
            Yes, and at entity level rather than interface strings alone. Each listing, page and category carries its own per-locale content, with fifteen languages pre-configured and right-to-left layout supported for Arabic and Hebrew. Adding a language is an admin action, not a deployment.
          
        
      
    
  

  
    
    
      
        
## See exactly what you are getting - before you commit

Request a working demo of the host console, the calendar and the payout queue, or check exact pricing.

        [See Pricing](/9flats-clone/development-cost/)[Full Overview](/9flats-clone/)
      
    
  

  
    
      
        Explore
        
## Explore the 9flats Clone

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

  
    
    
      
        
## Ready to launch a marketplace hosts will stay on?

        
Deploy in 6 days with the host console, the calendar and the payout pipeline included, full Laravel source on hosting you own.

        [Talk to Us →](/9flats-clone/)
      
      
        
          **Written by the Miracuves Product Team**·
          Reviewed for accuracy·
          Last updated **August 20, 2026**
        
        
          Miracuves · 9flats Clone Solution
          Ships from the same rental-marketplace codebase as the Airbnb Clone - one platform, two product framings
