---
title: ShortMax Clone Features
description: 
url: https://miracuves.com/shortmax-clone/features
date_modified: 2026-09-01
author: miracuves
language: en_US
---

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
    
      
        
          
            [Home](/)/[ShortMax Clone](/shortmax-clone/)/Features
          
          ShortMax Clone · Features
          
# ShortMax Clone Features: Retention Paid in Inventory

          
The hardest number in short drama is the cost of a returning viewer. This build treats that as a product problem rather than a media-buying one: the check-in ladder, the referral loop and the campaign desk are shipped modules, and every coin earned, spent, referred or checked in writes a typed ledger row. That is what lets the console report an economy rather than a balance. Here is what ships, grouped by who touches it.

          [Request a Live Demo →](https://miracuves.com/schedule-consultation/)[See Pricing](/shortmax-clone/development-cost/)
          
            **7** typed ledger codes
            **5** login types
            **6 days** to deploy
          
        
        
          RetentionBought in coins, not cash
          
            What One Returning Viewer Touches
            
              01Check-in claimed, streak advances
              02Ledger row written with its code
              03Reward task credits the wallet
              04Referral credits the referrer
              05Campaign writes an inbox row
              06Coin economy analytics update
            
          
        
      
    
  

  
    
      
        7Typed Ledger Codes
        33Mongoose Models on MongoDB
        202Registered API Handlers
        5Locales With RTL Layout
      
    
  

  
    
      
        By Role
        
## Feature Set by Role

        
Three clients on one Express and MongoDB API. The growth loop is designed to land on the store build, where the rewards, the referral and the ad unlock all actually run.

      
      
        
          01
          
### The Returning Viewer

          
A seven day check-in ladder with a streak, ad reward tasks under a daily cap, follow bonuses for Instagram, Facebook and TikTok, an email bonus and a login bonus. Each one pays out in coins the operator issues rather than cash, which means return visits are bought with inventory at a cost you set.

        
        
          02
          
### The Referrer

          
A referral loop with an operator-set reward amount, crediting the referrer on signup so an existing viewer becomes an acquisition channel. Referral is the one line that reduces a cost rather than adding revenue, and it compounds as the base grows.

        
        
          03
          
### The Campaign Operator

          
Campaign templates, audience selection, scheduling and cancellation, and campaign statistics, with an in-app inbox row written for every targeted user. The campaign desk and the inbox work without any external service, which matters because it means reach does not depend on a push provider being configured.

        
        
          04
          
### The Economy Analyst

          
Coin economy analytics tied to the seven ledger codes, alongside overview counts and charts, user analytics with a country filter, paid revenue monitoring, series revenue breakdown and top revenue episodes. The question this answers is not what the balance is but what it cost to create.

        
        
          05
          
### The Mobile Viewer

          
The Flutter store build with five tabs: episode-wise reels, rewards quests, referral, coin and AdMob ad unlock, and wallet histories, in the same five locales. This is where the growth loop lands, because the live rewarded ad path exists on the store build rather than on the web.

        
        
          06
          
### The Operator

          
Permission modules across four actions with staff accounts bound to a named role, and a server-enforced view-only demo operator so a prospect or a new hire can be shown the console without being able to change anything in it.

        
      
      
Five login types and five locales with right-to-left layout for Hebrew and Arabic ship alongside, because a growth-led launch usually means several markets rather than one.

    
  

  
    
      
        Compare
        
## ShortMax vs Miracuves Clone vs Building From Scratch

        
What each route gives you on the parts that decide whether returning is cheaper than acquiring.

      
      
        
| What decides it | Miracuves ShortMax Clone | Building from scratch |
| --- | --- | --- |
| Time to a working loop | Six working days | A multi-year programme with a senior team |
| Retention mechanics | Check-in ladder, streaks and tasks as shipped modules | The part deferred until acquisition cost becomes painful |
| Referral | Operator-set reward, credited on signup | Usually a share link with no attribution behind it |
| Coin accounting | Seven typed ledger codes on every movement | A balance field, which cannot explain how it got there |
| Reaching your own users | Campaign desk with an in-app inbox, no external service | An email tool and a push provider, both external |
| Analytics | Coin economy analytics tied to the ledger codes | Counts, with no view of what a coin cost to issue |
| Markets | Five locales with RTL, five login types | One market, rebuilt for the second |
| Source code | Full source across web, console and Flutter, yours | Yours, at the cost of building all of it |

      
      
ShortMax itself is the reference for what this category looks like; it is not a product you can buy or self-host. The comparison that matters commercially is the second column against the third.

    
  

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

        
One viewer, traced from a referral link through to a coin economy report, with every movement carrying its own ledger code.

      
      
        01
### They arrive through somebody already here

A referral loop with an operator-set reward amount credits the referrer on signup. Five login types mean the sign-up step is not the place the funnel breaks, which matters more in a growth-led launch than almost anything else on this page.

        02
### The first coins arrive without a purchase

A login bonus, an email bonus and follow bonuses for Instagram, Facebook and TikTok give a new viewer a balance before they have spent anything. Those coins cost inventory rather than cash, which is the whole economic argument of this build.

        03
### Every movement writes a typed row

Earned, spent, referred, checked in: each coin movement writes a ledger row carrying one of seven codes. That typing is what turns a wallet into an economy you can report on, because the console can then say what a coin cost to create rather than only what the balance is.

        04
### The ladder gives them a reason to come back

A seven day check-in ladder with a streak, plus ad reward tasks under a daily cap. The cap is the control that stops the reward economy from being farmed, and it is an operator setting rather than a constant, so it can be tightened once you see behaviour.

        05
### Coins open episodes

The earned balance meets the locked episode. Coin, VIP entitlement or an AdMob rewarded ad on the store build can each open it. A viewer who has never spent cash still reaches the content, and still generates revenue through the ad path.

        06
### The operator reaches them without a middleman

Campaign templates, audience selection, scheduling and cancellation, with an in-app inbox row written for every targeted user. The campaign desk and the inbox work without any external service; device push additionally needs your own Firebase project configured.

        07
### The economy reports on itself

Coin economy analytics tied to the ledger codes, alongside paid revenue monitoring, user analytics with a country filter, series revenue breakdown and top revenue episodes. The question a growth-led operator asks is which title returned the spend, and this is where that is answered.

      
    
  

  
    
      
        Deliberate
        
## Every Feature Earns Its Place

        
Each module below exists because a growth-led platform stops working without it, not because a competitor lists it.

      
      
        
| Module | Why it is in the base build |
| --- | --- |
| Seven typed ledger codes | A balance field cannot say whether a coin was bought, earned, referred or granted, and that distinction is the difference between a report and a guess. |
| Seven day check-in ladder | Habit forms across days, not sessions. A ladder with a streak is the cheapest retention mechanism available because it pays in inventory. |
| Daily cap on reward tasks | Without a cap the reward economy is farmed within a week and the coin loses whatever value it had. |
| Referral credited on signup | A reward paid later is a reward nobody trusts. Crediting the referrer immediately is what makes the loop actually run. |
| Social follow bonuses | Owned audience on other platforms is free reach. Paying a few coins for a follow is the cheapest channel a new operator has. |
| Campaign desk with inbox | Reaching your own users should not depend on a third-party service being configured and paid for. |
| Five login types | A growth-led launch dies at the sign-up step. More routes in is the least glamorous conversion work and the most reliable. |
| Country filter on analytics | A multi-market launch needs to know which market is working, not just that the total is rising. |
| View-only demo operator | Showing the console to a prospect or a new hire without risking a change is a small thing that removes a real fear. |

      
      
The catalog, the vertical player, coin packs and VIP windows all ship as well; this page concentrates on the growth layer because that is what this build is organised around.

    
  

  
    
      
        Stack
        
## The Technology Behind the Features

        
What the platform is actually built on, and what that means for the team who inherits it.

      
      
        **API and data**An Express API over MongoDB with thirty-three Mongoose models and roughly 202 registered API handlers, plus a seed script so a fresh deployment has something to work against on day one.
        **The ledger**Seven typed codes behind every coin movement, so earned, spent, referred and checked-in coins are distinguishable in the data rather than only in intent. This is what the coin economy analytics are computed from.
        **Operator console**A Next.js 14 application carrying the campaign desk, the rewards configuration, analytics with a country filter, paid revenue monitoring and the permission modules across four actions.
        **Mobile**A Flutter store build with five tabs covering episode-wise reels, rewards quests, referral, coin and AdMob ad unlock and wallet histories, in the same five locales as the web.
        **Identity**Five login types, which on a growth-led launch is a conversion feature rather than a convenience, because the sign-up step is where a referral funnel most often fails.
        **Localisation**Five locales with right-to-left layout for Hebrew and Arabic, because a growth-led operator is usually testing several markets rather than perfecting one.
      
      
        
### Why the typed ledger is the number that matters

        
Coins issued as rewards cost inventory. Coins sold cost nothing but the gateway fee. Those are completely different economics arriving in the same wallet, and a platform that stores a single balance cannot tell them apart afterwards. Seven typed codes on every movement is what makes it possible to say what your retention actually cost, which is the only question a growth-led operator genuinely needs answered.

        
          **7**Ledger codes
          **33**Mongoose models
          **5**Login types
          **$3,399**One-time, fixed
        
      
      
The stack is Express and MongoDB with a Next.js console and a Flutter build, on standard infrastructure you own and can hire against.

    
  

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

        
Named here rather than discovered after the invoice.

      
      
        
### Stated limitations and what needs your account

        
**Passwords use reversible encryption.** Not one-way hashing. On a platform holding wallet balances this is the item we would schedule first, and it is straightforward scoped work that costs less before a live user base than after.

        
**There is no attribution, deep linking, UTM tracking, cohort analysis or A/B testing module.** The analytics are operational counts and revenue breakdowns. For a growth-led operator that is a real gap worth reading twice: you can see what the economy did, but not which external channel produced it.

        
**Web ad unlock is a simulated timed preview** rather than a live ad network. AdMob on the Flutter store build is the live path, so rewarded ad revenue should be modelled against the store build rather than the web.

        
**Device push needs your own Firebase project.** The campaign desk and the in-app inbox work without any external service, so a campaign still reaches every targeted user in the app, but it will not arrive as a device notification until Firebase is configured.

        
**Every external provider is your own account.** Payment gateways, AdMob, Firebase push, Resend mail and S3 or DigitalOcean storage all run on credentials you hold.

      
      
The controls that are built are real: permission modules across four actions, staff accounts bound to a named role, and a server-enforced view-only demo operator.

    
  

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

          
The deployment process, a modelled reference deployment for a referral-led launch, and what to check on the ledger and the reward caps before you hire anyone - on the Development Company page.

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

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            Why does the ledger need seven codes?
            Because coins arrive in a wallet with completely different economics behind them. A coin sold costs you a gateway fee; a coin issued as a check-in reward costs you inventory you could have sold. A single balance field cannot tell those apart after the fact, so it cannot answer what your retention actually cost. Seven typed codes on every movement is what makes the coin economy reportable rather than merely countable.
          
          
            What stops the reward economy being farmed?
            A daily cap on ad reward tasks, set by the operator rather than fixed in code. Without a cap, a rewards ladder is farmed within a week and the coin stops meaning anything, which destroys the paid tender alongside it. Being able to tighten the cap once you see real behaviour is more useful than getting the number right on day one.
          
          
            Do campaigns need a push provider?
            Not to reach your users. The campaign desk writes an in-app inbox row for every targeted user, so templates, audience selection, scheduling and cancellation all work without any external service configured. What needs your own Firebase project is device push, which is the difference between a message waiting in the app and a notification appearing on the phone.
          
        
        
          
            Can I track which ad campaign brought a viewer?
            No, and this is the limitation most worth understanding before you buy. There is no attribution, deep linking, UTM tracking, cohort analysis or A/B testing module. The analytics are operational counts and revenue breakdowns, so you can see what the economy did and which titles earned, but not which external channel produced a given user. If paid acquisition attribution is central to your plan, raise it on the first call.
          
          
            Why do rewarded ads only work properly on mobile?
            Because AdMob on the Flutter store build is the live path, and the web rewarded unlock is a simulated timed preview rather than a real ad network. That is stated rather than implied because a revenue model leaning on rewarded advertising needs to assume the store build carries it, which also affects where you push acquisition.
          
          
            How does referral actually credit the referrer?
            On signup, with an operator-set reward amount, and the movement writes its own ledger row like every other coin event. Crediting immediately rather than after some later qualifying action matters because a reward paid on a condition nobody can see is a reward nobody trusts, and an untrusted referral loop simply does not run.
          
        
      
    
  

  
    
    
      
        
## See a coin earned, spent and reported, live

Ask for the demo and we will claim a check-in, watch a reward task credit the wallet, follow the referral link, then schedule a campaign and watch the inbox row appear.

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

  
    
      
        Explore
        
## Explore the ShortMax Clone

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

  
    
    
      
        
## Ready to make returning cheaper than acquiring?

        
Deploy in six working days with the rewards ladder, the referral loop, the campaign desk and the typed coin ledger included, your reward amounts and caps configured with you, and the full source on infrastructure you own.

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

				
				
				
				
						
					
			
						
				
					
  /* 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 **ShortMax**.

        
          
            Why this name
            
“**ShortMax** Clone” is used descriptively. It is how the software industry refers to building a platform with functionality similar to ShortMax, 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 ShortMax website or applications.

          
          
            Trademarks
            
**ShortMax** 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/)
