storebound/site/img/journey.svg

153 lines
9.6 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 560" width="960" height="560" role="img" aria-labelledby="t d">
<title id="t">storebound · the journey from zero to Submit for review</title>
<desc id="d">Nine steps: config, app records, products, listings, questionnaires, privacy and icons, store art, validate, and finally you press Submit. Each step is tagged API (storebound command), UI (a skill guides your agent or you through the console), local, or you (your own click).</desc>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M0 0 L10 5 L0 10 z" fill="#64748b"/>
</marker>
<style>
text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; }
.h { font-size: 22px; font-weight: 700; fill: #f8fafc; }
.s { font-size: 13px; fill: #94a3b8; }
.n { font-size: 13px; font-weight: 700; fill: #0f172a; }
.tt { font-size: 14.5px; font-weight: 700; fill: #f1f5f9; }
.l { font-size: 11px; fill: #cbd5e1; }
.tg { font-size: 10.5px; font-weight: 700; letter-spacing: .4px; }
.lg { font-size: 12px; fill: #94a3b8; }
.box { fill: #1e293b; stroke: #334155; stroke-width: 1.2; }
.wire { stroke: #64748b; stroke-width: 2; fill: none; }
</style>
</defs>
<rect x="0" y="0" width="960" height="560" rx="20" fill="#0f172a"/>
<rect x="0.5" y="0.5" width="959" height="559" rx="20" fill="none" stroke="#334155"/>
<text x="28" y="46" class="h">From zero to “Submit for review”</text>
<text x="28" y="70" class="s">Google Play + App Store · one config · your AI coding agent · storebound never presses Submit</text>
<!-- wires -->
<path class="wire" d="M188 179 H212" marker-end="url(#arrow)"/>
<path class="wire" d="M374 179 H398" marker-end="url(#arrow)"/>
<path class="wire" d="M560 179 H584" marker-end="url(#arrow)"/>
<path class="wire" d="M746 179 H770" marker-end="url(#arrow)"/>
<path class="wire" d="M852 254 V284 H108 V312" marker-end="url(#arrow)"/>
<path class="wire" d="M188 389 H212" marker-end="url(#arrow)"/>
<path class="wire" d="M374 389 H398" marker-end="url(#arrow)"/>
<path class="wire" d="M560 389 H584" marker-end="url(#arrow)"/>
<!-- 1 config -->
<g transform="translate(28 104)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">1</text>
<text x="42" y="29" class="tt">Config</text>
<text x="14" y="62" class="l">storebound.config.ts</text>
<text x="14" y="80" class="l">+ store/*.md texts,</text>
<text x="14" y="98" class="l">one section per language</text>
<rect x="14" y="116" width="46" height="20" rx="10" fill="#0c4a6e"/><text x="37" y="130" class="tg" fill="#7dd3fc" text-anchor="middle">LOCAL</text>
</g>
<!-- 2 app records -->
<g transform="translate(214 104)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">2</text>
<text x="42" y="29" class="tt">App records</text>
<text x="14" y="62" class="l">bundle id registered;</text>
<text x="14" y="80" class="l">Play app + App Store</text>
<text x="14" y="98" class="l">Connect record created</text>
<rect x="14" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="31" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
<rect x="54" y="116" width="30" height="20" rx="10" fill="#451a03"/><text x="69" y="130" class="tg" fill="#fcd34d" text-anchor="middle">UI</text>
</g>
<!-- 3 products -->
<g transform="translate(400 104)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">3</text>
<text x="42" y="29" class="tt">Products</text>
<text x="14" y="62" class="l">in-app purchases with</text>
<text x="14" y="80" class="l">regional prices, review</text>
<text x="14" y="98" class="l">screenshots, testers</text>
<rect x="14" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="31" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
<rect x="54" y="116" width="30" height="20" rx="10" fill="#451a03"/><text x="69" y="130" class="tg" fill="#fcd34d" text-anchor="middle">UI</text>
</g>
<!-- 4 listings -->
<g transform="translate(586 104)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">4</text>
<text x="42" y="29" class="tt">Listings</text>
<text x="14" y="62" class="l">name, subtitle, texts,</text>
<text x="14" y="80" class="l">keywords, contact, in</text>
<text x="14" y="98" class="l">every language</text>
<rect x="14" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="31" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
</g>
<!-- 5 questionnaires -->
<g transform="translate(772 104)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">5</text>
<text x="42" y="29" class="tt">Questionnaires</text>
<text x="14" y="62" class="l">Data safety, age rating,</text>
<text x="14" y="80" class="l">encryption · IARC, target</text>
<text x="14" y="98" class="l">audience, App Privacy</text>
<rect x="14" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="31" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
<rect x="54" y="116" width="30" height="20" rx="10" fill="#451a03"/><text x="69" y="130" class="tg" fill="#fcd34d" text-anchor="middle">UI</text>
</g>
<!-- 6 privacy & icons -->
<g transform="translate(28 314)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">6</text>
<text x="42" y="29" class="tt">Privacy &amp; icons</text>
<text x="14" y="62" class="l">policy page, privacy</text>
<text x="14" y="80" class="l">manifest scan, every</text>
<text x="14" y="98" class="l">icon from one artwork</text>
<rect x="14" y="116" width="46" height="20" rx="10" fill="#0c4a6e"/><text x="37" y="130" class="tg" fill="#7dd3fc" text-anchor="middle">LOCAL</text>
</g>
<!-- 7 store art -->
<g transform="translate(214 314)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">7</text>
<text x="42" y="29" class="tt">Store art</text>
<text x="14" y="62" class="l">screenshots, previews,</text>
<text x="14" y="80" class="l">feature graphic: render,</text>
<text x="14" y="98" class="l">check, upload</text>
<rect x="14" y="116" width="46" height="20" rx="10" fill="#0c4a6e"/><text x="37" y="130" class="tg" fill="#7dd3fc" text-anchor="middle">LOCAL</text>
<rect x="66" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="83" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
</g>
<!-- 8 validate -->
<g transform="translate(400 314)">
<rect class="box" width="160" height="150" rx="12"/>
<circle cx="22" cy="24" r="13" fill="#e2e8f0"/><text x="22" y="28.5" class="n" text-anchor="middle">8</text>
<text x="42" y="29" class="tt">Validate</text>
<text x="14" y="62" class="l">offline check, then a</text>
<text x="14" y="80" class="l">read-only store report:</text>
<text x="14" y="98" class="l">blockers in fix order</text>
<rect x="14" y="116" width="34" height="20" rx="10" fill="#14532d"/><text x="31" y="130" class="tg" fill="#86efac" text-anchor="middle">API</text>
<rect x="54" y="116" width="46" height="20" rx="10" fill="#0c4a6e"/><text x="77" y="130" class="tg" fill="#7dd3fc" text-anchor="middle">LOCAL</text>
</g>
<!-- 9 you press submit -->
<g transform="translate(586 314)">
<rect width="346" height="150" rx="12" fill="#3b0a24" stroke="#db2777" stroke-width="1.5"/>
<circle cx="22" cy="24" r="13" fill="#f9a8d4"/><text x="22" y="28.5" class="n" text-anchor="middle">9</text>
<text x="42" y="29" class="tt">You press Submit</text>
<text x="14" y="62" class="l">Play Console: Send changes for review</text>
<text x="14" y="80" class="l">App Store Connect: Submit for Review</text>
<text x="14" y="98" class="l">Releases and rollouts after approval stay yours too.</text>
<rect x="14" y="116" width="38" height="20" rx="10" fill="#500724"/><text x="33" y="130" class="tg" fill="#f9a8d4" text-anchor="middle">YOU</text>
</g>
<!-- legend -->
<g transform="translate(28 498)">
<rect x="0" y="0" width="34" height="20" rx="10" fill="#14532d"/><text x="17" y="14" class="tg" fill="#86efac" text-anchor="middle">API</text>
<text x="42" y="14.5" class="lg">storebound command</text>
<rect x="178" y="0" width="30" height="20" rx="10" fill="#451a03"/><text x="193" y="14" class="tg" fill="#fcd34d" text-anchor="middle">UI</text>
<text x="216" y="14.5" class="lg">console only: a skill walks your agent (or you) through it</text>
<rect x="562" y="0" width="46" height="20" rx="10" fill="#0c4a6e"/><text x="585" y="14" class="tg" fill="#7dd3fc" text-anchor="middle">LOCAL</text>
<text x="616" y="14.5" class="lg">your machine</text>
<rect x="718" y="0" width="38" height="20" rx="10" fill="#500724"/><text x="737" y="14" class="tg" fill="#f9a8d4" text-anchor="middle">YOU</text>
<text x="764" y="14.5" class="lg">your click</text>
</g>
</svg>