← Back to Blog
Tutorial

Launch SEO-Ready: Using the Built-in SEO Audit

Jul 2, 2026·6 min read

Why SEO matters even for apps

"It's a web app, not a blog — why do I care about SEO?" Because search engines index your app. When someone searches for what your app does, you want to show up. Even if your traffic is mostly word-of-mouth, good SEO also means good sharing behavior: your og:image shows up when someone tweets your link, your title renders correctly in Slack previews, and Google doesn't mark you as "not mobile-friendly".

Getting this right takes 30 minutes if you know what to fix. The SEO Audit panel does the knowing for you.

Accessing the SEO Audit panel

First, publish your app (click the Publish button in the toolbar). Then click the SEO Audit icon in the sidebar (it looks like a magnifying glass with a chart). The panel fetches your published URL and runs the analysis.

The analysis takes about 15–30 seconds — it fetches your page, parses the HTML, checks your headers, and analyzes the DOM.

What the audit checks

Meta tags

  • </code> — present and under 60 characters?</li><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono"><meta name="description"></code> — present and between 120–160 characters?</li><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono"><meta name="robots"></code> — not accidentally set to "noindex"?</li><li>Canonical URL — set and pointing to your primary URL?</li></ul><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Open Graph and social sharing</strong></p><ul class="list-disc list-inside space-y-1.5 my-3 text-[#9090a0]"><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">og:title</code>, <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">og:description</code>, <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">og:image</code> — all present?</li><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">og:image</code> dimensions — at least 1200×630 pixels? (small images look bad in social previews)</li><li>Twitter card meta — <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">twitter:card</code>, <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">twitter:image</code>?</li></ul><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Technical SEO</strong></p><ul class="list-disc list-inside space-y-1.5 my-3 text-[#9090a0]"><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">/robots.txt</code> — exists and doesn't block all crawlers?</li><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">/sitemap.xml</code> — exists and lists your important pages?</li><li>HTTPS — your app is already on HTTPS by default via Spinini, so this always passes</li><li>No broken internal links?</li></ul><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Mobile-friendliness</strong></p><ul class="list-disc list-inside space-y-1.5 my-3 text-[#9090a0]"><li><code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono"><meta name="viewport"></code> set correctly?</li><li>Text readable without zooming?</li><li>Touch targets (buttons, links) large enough?</li></ul><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Page speed hints</strong></p><ul class="list-disc list-inside space-y-1.5 my-3 text-[#9090a0]"><li>Are images unoptimized (very large files)?</li><li>Render-blocking scripts in <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono"><head></code>?</li><li>Missing font-display: swap?</li></ul><h2 class="text-2xl font-bold text-[#f0f0f2] mt-10 mb-4">Reading the results</h2><p class="text-[#9090a0] leading-relaxed mb-4">Each check is marked Pass, Warning, or Fail with a clear explanation. Failures and warnings include a <strong class="text-[#f0f0f2]">"How to fix"</strong> section with the exact code change to make.</p><p class="text-[#9090a0] leading-relaxed mb-4">A typical result for a freshly built Next.js app:</p><div class="overflow-x-auto my-4"><table class="w-full text-sm border-collapse"><tbody><tr class="border-b border-[#2a2a35]"><td class="py-2 px-3 font-semibold text-[#f0f0f2]">Check</td><td class="py-2 px-3 font-semibold text-[#f0f0f2]">Status</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">Title tag</td><td class="py-2 px-3 text-[#9090a0]">Pass</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">Meta description</td><td class="py-2 px-3 text-[#9090a0]">Fail — missing</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">og:image</td><td class="py-2 px-3 text-[#9090a0]">Warning — image too small (800×400)</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">robots.txt</td><td class="py-2 px-3 text-[#9090a0]">Fail — file not found</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">Viewport meta</td><td class="py-2 px-3 text-[#9090a0]">Pass</td></tr><tr class=""><td class="py-2 px-3 text-[#9090a0]">Mobile touch targets</td><td class="py-2 px-3 text-[#9090a0]">Warning — 3 buttons under 44px</td></tr></tbody></table></div><h2 class="text-2xl font-bold text-[#f0f0f2] mt-10 mb-4">Fixing common issues</h2><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Missing meta description</strong> — add this to your <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono"><head></code>:</p><pre class="bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4"><code class="text-sm font-mono text-[#e0e0e6] leading-relaxed"><meta name="description" content="Your 120-160 character description here." /></code></pre><p class="text-[#9090a0] leading-relaxed mb-4">In Next.js, use the Metadata API:</p><pre class="bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4"><code class="text-sm font-mono text-[#e0e0e6] leading-relaxed">export const metadata = { description: 'Your description here.', }</code></pre><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Missing og:image</strong> — create a 1200×630 PNG (your logo on a colored background is fine) and add:</p><pre class="bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4"><code class="text-sm font-mono text-[#e0e0e6] leading-relaxed"><meta property="og:image" content="https://yourapp.spinini.com/og-image.png" /></code></pre><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Missing robots.txt</strong> — create <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">/public/robots.txt</code>:</p><pre class="bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4"><code class="text-sm font-mono text-[#e0e0e6] leading-relaxed">User-agent: * Allow: / Sitemap: https://yourapp.spinini.com/sitemap.xml</code></pre><p class="text-[#9090a0] leading-relaxed mb-4"><strong class="text-[#f0f0f2]">Missing sitemap.xml</strong> — for a static site, create <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">/public/sitemap.xml</code>. For a Next.js app, install <code class="bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono">next-sitemap</code> and configure it.</p><h2 class="text-2xl font-bold text-[#f0f0f2] mt-10 mb-4">Re-running the audit</h2><p class="text-[#9090a0] leading-relaxed mb-4">After making fixes, republish your app and click <strong class="text-[#f0f0f2]">Re-run audit</strong> in the panel. The score updates to reflect your changes. Aim for all Passes — a clean audit means you've done the basics right.</p></article><div class="mt-16 pt-10 border-t border-[#2a2a35]"><div class="bg-gradient-to-br from-orange-500/10 to-orange-600/5 border border-orange-500/20 rounded-2xl p-8 text-center"><h3 class="text-xl font-bold text-[#f0f0f2] mb-2">Ready to start building?</h3><p class="text-[#9090a0] text-sm mb-6">Free account includes 100 AI credits/month. No credit card required.</p><a class="inline-flex items-center gap-2 bg-orange-500 hover:bg-orange-600 text-white rounded-lg px-6 py-3 text-sm font-semibold transition-colors" href="/signup">Start for free →</a></div></div></div></div></main><footer class="bg-[#0a0a0c] border-t border-[#2e2e35]"><div class="max-w-7xl mx-auto px-4 sm:px-6 py-16"><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10"><div><a class="inline-flex" aria-label="Spinini home" href="/"><span class="inline-flex items-center gap-2 "><svg width="28" height="28" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" style="flex-shrink:0"><style> @keyframes spinini-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes spinini-inner { 0% { transform: rotate(0deg); } 100% { transform: rotate(-360deg); } } .spinini-ring { transform-origin: 20px 20px; animation: spinini-spin 3s linear infinite; } .spinini-inner-ring { transform-origin: 20px 20px; animation: spinini-inner 2s linear infinite; } </style><circle cx="20" cy="20" r="18" fill="url(#spinini-bg)" opacity="0.15"></circle><circle cx="20" cy="20" r="10" fill="url(#spinini-core)"></circle><g class="spinini-ring"><circle cx="20" cy="20" r="17" stroke="url(#spinini-gradient1)" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="70 37" fill="none"></circle></g><g class="spinini-inner-ring"><circle cx="20" cy="20" r="13" stroke="url(#spinini-gradient2)" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="40 42" fill="none"></circle></g><text x="20" y="25" text-anchor="middle" fill="white" font-size="13" font-weight="700" font-family="system-ui, sans-serif">S</text><defs><radialGradient id="spinini-bg" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#f97316"></stop><stop offset="100%" stop-color="#7c3aed"></stop></radialGradient><radialGradient id="spinini-core" cx="35%" cy="30%" r="70%"><stop offset="0%" stop-color="#fb923c"></stop><stop offset="60%" stop-color="#ea580c"></stop><stop offset="100%" stop-color="#c2410c"></stop></radialGradient><linearGradient id="spinini-gradient1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#f97316" stop-opacity="1"></stop><stop offset="50%" stop-color="#a855f7" stop-opacity="0.8"></stop><stop offset="100%" stop-color="#f97316" stop-opacity="0.3"></stop></linearGradient><linearGradient id="spinini-gradient2" x1="100%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="#fb923c" stop-opacity="0.9"></stop><stop offset="100%" stop-color="#fb923c" stop-opacity="0.2"></stop></linearGradient></defs></svg><span class="font-bold text-[#f0f0f2] tracking-tight text-xl">Spini<span class="text-orange-500">ni</span></span></span></a><p class="mt-3 text-sm text-[#9090a0] leading-relaxed">Build, run, and deploy apps from your browser. No setup required.</p></div><div><p class="text-sm font-semibold text-[#f0f0f2] mb-4">Product</p><ul class="space-y-3"><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/features">Features</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/examples">Examples</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/pricing">Pricing</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/changelog">Changelog</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/status">Status</a></li></ul></div><div><p class="text-sm font-semibold text-[#f0f0f2] mb-4">Resources</p><ul class="space-y-3"><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/docs">Documentation</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/help">Help Center</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/blog">Blog</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/careers">Careers</a></li></ul></div><div><p class="text-sm font-semibold text-[#f0f0f2] mb-4">Company</p><ul class="space-y-3"><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/about">About</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/enterprise">Enterprise</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/contact">Contact</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/legal/privacy">Privacy</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/security">Security</a></li><li><a class="text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors" href="/legal/terms">Terms</a></li></ul></div></div><div class="mt-12 pt-8 border-t border-[#2e2e35] flex flex-col sm:flex-row items-center justify-between gap-4"><p class="text-xs text-[#5a5a6a]">© 2025 Spinini. All rights reserved.</p><div class="flex gap-6"><a class="text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors" href="/legal/terms">Terms</a><a class="text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors" href="/legal/privacy">Privacy</a><a class="text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors" href="/security">Security</a></div></div></div></footer></div><script src="/_next/static/chunks/webpack-719e1c1983584efc.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/558ca1a6aa3cb55e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/css/67fff5e63eb21a96.css\",\"style\"]\n3:HL[\"/_next/static/css/386cc4aadb4d4b32.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[2699,[],\"\"]\n6:I[4944,[\"4944\",\"static/chunks/4944-89b8572dfdd13b9c.js\",\"666\",\"static/chunks/app/(marketing)/blog/%5Bslug%5D/page-bae503000942833b.js\"],\"\"]\n7:I[2858,[],\"\"]\n9:I[989,[],\"\"]\na:I[9388,[\"4944\",\"static/chunks/4944-89b8572dfdd13b9c.js\",\"3041\",\"static/chunks/app/(marketing)/layout-9c5eb075ad8ce0c5.js\"],\"default\"]\nb:I[6134,[\"4944\",\"static/chunks/4944-89b8572dfdd13b9c.js\",\"3041\",\"static/chunks/app/(marketing)/layout-9c5eb075ad8ce0c5.js\"],\"default\"]\nc:I[2322,[\"2939\",\"static/chunks/2939-894005376b93368d.js\",\"3185\",\"static/chunks/app/layout-6fd32fd6ecd02697.js\"],\"Providers\"]\n12:I[9051,[],\"\"]\n8:[\"slug\",\"seo-audit-deploy\",\"d\"]\nd:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\ne:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nf:{\"display\":\"inline-block\"}\n10:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n13:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"uOUbpIM6sMRK7DzMLZZ4I\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"blog\",\"seo-audit-deploy\"],\"initialTree\":[\"\",{\"children\":[\"(marketing)\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"seo-audit-deploy\",\"d\"],{\"children\":[\"__PAGE__?{\\\"slug\\\":\\\"seo-audit-deploy\\\"}\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"(marketing)\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"seo-audit-deploy\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"div\",null,{\"className\":\"min-h-screen bg-[#0e0e10] text-[#f0f0f2]\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-3xl mx-auto px-4 sm:px-6 py-16\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/blog\",\"className\":\"inline-flex items-center gap-2 text-sm text-[#9090a0] hover:text-[#f0f0f2] mb-10 transition-colors\",\"children\":\"← Back to Blog\"}],[\"$\",\"div\",null,{\"className\":\"mb-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-xs font-medium px-2.5 py-1 rounded-full bg-blue-500/10 text-blue-400\",\"children\":\"Tutorial\"}],[\"$\",\"h1\",null,{\"className\":\"text-4xl font-bold text-[#f0f0f2] mt-4 mb-3 leading-tight\",\"children\":\"Launch SEO-Ready: Using the Built-in SEO Audit\"}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3 text-sm text-[#5a5a6a]\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Jul 2, 2026\"}],[\"$\",\"span\",null,{\"children\":\"·\"}],[\"$\",\"span\",null,{\"children\":\"6 min read\"}]]}]]}],[\"$\",\"article\",null,{\"className\":\"prose-custom\",\"children\":[[\"$\",\"h2\",\"0\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"Why SEO matters even for apps\"}],[\"$\",\"p\",\"2\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\\\"It's a web app, not a blog — why do I care about SEO?\\\" Because search engines index your app. When someone searches for what your app does, you want to show up. Even if your traffic is mostly word-of-mouth, good SEO also means good sharing behavior: your og:image shows up when someone tweets your link, your title renders correctly in Slack previews, and Google doesn't mark you as \\\"not mobile-friendly\\\".\"}}],[\"$\",\"p\",\"4\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"Getting this right takes 30 minutes if you know what to fix. The SEO Audit panel does the knowing for you.\"}}],[\"$\",\"h2\",\"6\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"Accessing the SEO Audit panel\"}],[\"$\",\"p\",\"8\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"First, \u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003epublish your app\u003c/strong\u003e (click the Publish button in the toolbar). Then click the \u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eSEO Audit icon\u003c/strong\u003e in the sidebar (it looks like a magnifying glass with a chart). The panel fetches your published URL and runs the analysis.\"}}],[\"$\",\"p\",\"10\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"The analysis takes about 15–30 seconds — it fetches your page, parses the HTML, checks your headers, and analyzes the DOM.\"}}],[\"$\",\"h2\",\"12\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"What the audit checks\"}],[\"$\",\"p\",\"14\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMeta tags\u003c/strong\u003e\"}}],[\"$\",\"ul\",\"19\",{\"className\":\"list-disc list-inside space-y-1.5 my-3 text-[#9090a0]\",\"children\":[[\"$\",\"li\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003ctitle\u003e\u003c/code\u003e — present and under 60 characters?\"}}],[\"$\",\"li\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003cmeta name=\\\"description\\\"\u003e\u003c/code\u003e — present and between 120–160 characters?\"}}],[\"$\",\"li\",\"2\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003cmeta name=\\\"robots\\\"\u003e\u003c/code\u003e — not accidentally set to \\\"noindex\\\"?\"}}],[\"$\",\"li\",\"3\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Canonical URL — set and pointing to your primary URL?\"}}]]}],[\"$\",\"p\",\"20\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eOpen Graph and social sharing\u003c/strong\u003e\"}}],[\"$\",\"ul\",\"24\",{\"className\":\"list-disc list-inside space-y-1.5 my-3 text-[#9090a0]\",\"children\":[[\"$\",\"li\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003eog:title\u003c/code\u003e, \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003eog:description\u003c/code\u003e, \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003eog:image\u003c/code\u003e — all present?\"}}],[\"$\",\"li\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003eog:image\u003c/code\u003e dimensions — at least 1200×630 pixels? (small images look bad in social previews)\"}}],[\"$\",\"li\",\"2\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Twitter card meta — \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003etwitter:card\u003c/code\u003e, \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003etwitter:image\u003c/code\u003e?\"}}]]}],[\"$\",\"p\",\"25\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eTechnical SEO\u003c/strong\u003e\"}}],[\"$\",\"ul\",\"30\",{\"className\":\"list-disc list-inside space-y-1.5 my-3 text-[#9090a0]\",\"children\":[[\"$\",\"li\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e/robots.txt\u003c/code\u003e — exists and doesn't block all crawlers?\"}}],[\"$\",\"li\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e/sitemap.xml\u003c/code\u003e — exists and lists your important pages?\"}}],[\"$\",\"li\",\"2\",{\"dangerouslySetInnerHTML\":{\"__html\":\"HTTPS — your app is already on HTTPS by default via Spinini, so this always passes\"}}],[\"$\",\"li\",\"3\",{\"dangerouslySetInnerHTML\":{\"__html\":\"No broken internal links?\"}}]]}],[\"$\",\"p\",\"31\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMobile-friendliness\u003c/strong\u003e\"}}],[\"$\",\"ul\",\"35\",{\"className\":\"list-disc list-inside space-y-1.5 my-3 text-[#9090a0]\",\"children\":[[\"$\",\"li\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003cmeta name=\\\"viewport\\\"\u003e\u003c/code\u003e set correctly?\"}}],[\"$\",\"li\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Text readable without zooming?\"}}],[\"$\",\"li\",\"2\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Touch targets (buttons, links) large enough?\"}}]]}],[\"$\",\"p\",\"36\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003ePage speed hints\u003c/strong\u003e\"}}],[\"$\",\"ul\",\"40\",{\"className\":\"list-disc list-inside space-y-1.5 my-3 text-[#9090a0]\",\"children\":[[\"$\",\"li\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Are images unoptimized (very large files)?\"}}],[\"$\",\"li\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Render-blocking scripts in \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003chead\u003e\u003c/code\u003e?\"}}],[\"$\",\"li\",\"2\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Missing font-display: swap?\"}}]]}],[\"$\",\"h2\",\"41\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"Reading the results\"}],[\"$\",\"p\",\"43\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"Each check is marked Pass, Warning, or Fail with a clear explanation. Failures and warnings include a \u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003e\\\"How to fix\\\"\u003c/strong\u003e section with the exact code change to make.\"}}],[\"$\",\"p\",\"45\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"A typical result for a freshly built Next.js app:\"}}],[\"$\",\"div\",\"55\",{\"className\":\"overflow-x-auto my-4\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full text-sm border-collapse\",\"children\":[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"0\",{\"className\":\"border-b border-[#2a2a35]\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 font-semibold text-[#f0f0f2]\",\"children\":\"Check\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 font-semibold text-[#f0f0f2]\",\"children\":\"Status\"}]]}],[\"$\",\"tr\",\"1\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Title tag\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Pass\"}]]}],[\"$\",\"tr\",\"2\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Meta description\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Fail — missing\"}]]}],[\"$\",\"tr\",\"3\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"og:image\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Warning — image too small (800×400)\"}]]}],[\"$\",\"tr\",\"4\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"robots.txt\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Fail — file not found\"}]]}],[\"$\",\"tr\",\"5\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Viewport meta\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Pass\"}]]}],[\"$\",\"tr\",\"6\",{\"className\":\"\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Mobile touch targets\"}],[\"$\",\"td\",\"1\",{\"className\":\"py-2 px-3 text-[#9090a0]\",\"children\":\"Warning — 3 buttons under 44px\"}]]}]]}]}]}],[\"$\",\"h2\",\"56\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"Fixing common issues\"}],[\"$\",\"p\",\"58\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMissing meta description\u003c/strong\u003e — add this to your \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e\u003chead\u003e\u003c/code\u003e:\"}}],[\"$\",\"pre\",\"62\",{\"className\":\"bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4\",\"children\":[\"$\",\"code\",null,{\"className\":\"text-sm font-mono text-[#e0e0e6] leading-relaxed\",\"children\":\"\u003cmeta name=\\\"description\\\" content=\\\"Your 120-160 character description here.\\\" /\u003e\"}]}],[\"$\",\"p\",\"64\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"In Next.js, use the Metadata API:\"}}],[\"$\",\"pre\",\"70\",{\"className\":\"bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4\",\"children\":[\"$\",\"code\",null,{\"className\":\"text-sm font-mono text-[#e0e0e6] leading-relaxed\",\"children\":\"export const metadata = {\\n description: 'Your description here.',\\n}\"}]}],[\"$\",\"p\",\"72\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMissing og:image\u003c/strong\u003e — create a 1200×630 PNG (your logo on a colored background is fine) and add:\"}}],[\"$\",\"pre\",\"76\",{\"className\":\"bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4\",\"children\":[\"$\",\"code\",null,{\"className\":\"text-sm font-mono text-[#e0e0e6] leading-relaxed\",\"children\":\"\u003cmeta property=\\\"og:image\\\" content=\\\"https://yourapp.spinini.com/og-image.png\\\" /\u003e\"}]}],[\"$\",\"p\",\"78\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMissing robots.txt\u003c/strong\u003e — create \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e/public/robots.txt\u003c/code\u003e:\"}}],[\"$\",\"pre\",\"84\",{\"className\":\"bg-[#111115] border border-[#2a2a35] rounded-xl p-4 overflow-x-auto my-4\",\"children\":[\"$\",\"code\",null,{\"className\":\"text-sm font-mono text-[#e0e0e6] leading-relaxed\",\"children\":\"User-agent: *\\nAllow: /\\nSitemap: https://yourapp.spinini.com/sitemap.xml\"}]}],[\"$\",\"p\",\"86\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eMissing sitemap.xml\u003c/strong\u003e — for a static site, create \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003e/public/sitemap.xml\u003c/code\u003e. For a Next.js app, install \u003ccode class=\\\"bg-[#1a1a1f] border border-[#2a2a35] rounded px-1.5 py-0.5 text-[#f97316] text-[0.85em] font-mono\\\"\u003enext-sitemap\u003c/code\u003e and configure it.\"}}],[\"$\",\"h2\",\"88\",{\"className\":\"text-2xl font-bold text-[#f0f0f2] mt-10 mb-4\",\"children\":\"Re-running the audit\"}],[\"$\",\"p\",\"90\",{\"className\":\"text-[#9090a0] leading-relaxed mb-4\",\"dangerouslySetInnerHTML\":{\"__html\":\"After making fixes, republish your app and click \u003cstrong class=\\\"text-[#f0f0f2]\\\"\u003eRe-run audit\u003c/strong\u003e in the panel. The score updates to reflect your changes. Aim for all Passes — a clean audit means you've done the basics right.\"}}]]}],[\"$\",\"div\",null,{\"className\":\"mt-16 pt-10 border-t border-[#2a2a35]\",\"children\":[\"$\",\"div\",null,{\"className\":\"bg-gradient-to-br from-orange-500/10 to-orange-600/5 border border-orange-500/20 rounded-2xl p-8 text-center\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-xl font-bold text-[#f0f0f2] mb-2\",\"children\":\"Ready to start building?\"}],[\"$\",\"p\",null,{\"className\":\"text-[#9090a0] text-sm mb-6\",\"children\":\"Free account includes 100 AI credits/month. No credit card required.\"}],[\"$\",\"$L6\",null,{\"href\":\"/signup\",\"className\":\"inline-flex items-center gap-2 bg-orange-500 hover:bg-orange-600 text-white rounded-lg px-6 py-3 text-sm font-semibold transition-colors\",\"children\":\"Start for free →\"}]]}]}]]}]}],null],null],null]},[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(marketing)\",\"children\",\"blog\",\"children\",\"$8\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(marketing)\",\"children\",\"blog\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"div\",null,{\"className\":\"flex flex-col min-h-screen\",\"style\":{\"background\":\"radial-gradient(ellipse 80% 50% at 50% -10%, rgba(249,115,22,0.12), transparent 60%), radial-gradient(ellipse 60% 50% at 100% 20%, rgba(139,92,246,0.08), transparent 55%), linear-gradient(180deg, #0e0e10 0%, #0c0c14 50%, #0a0a10 100%)\"},\"children\":[[\"$\",\"$La\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(marketing)\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}],[\"$\",\"footer\",null,{\"className\":\"bg-[#0a0a0c] border-t border-[#2e2e35]\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-7xl mx-auto px-4 sm:px-6 py-16\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"$Lb\",null,{\"size\":28,\"textSize\":\"text-xl\",\"href\":\"/\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm text-[#9090a0] leading-relaxed\",\"children\":\"Build, run, and deploy apps from your browser. No setup required.\"}]]}],[[\"$\",\"div\",\"Product\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-semibold text-[#f0f0f2] mb-4\",\"children\":\"Product\"}],[\"$\",\"ul\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"li\",\"/features\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/features\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Features\"}]}],[\"$\",\"li\",\"/examples\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/examples\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Examples\"}]}],[\"$\",\"li\",\"/pricing\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/pricing\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Pricing\"}]}],[\"$\",\"li\",\"/changelog\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/changelog\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Changelog\"}]}],[\"$\",\"li\",\"/status\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/status\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Status\"}]}]]}]]}],[\"$\",\"div\",\"Resources\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-semibold text-[#f0f0f2] mb-4\",\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"li\",\"/docs\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/docs\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Documentation\"}]}],[\"$\",\"li\",\"/help\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/help\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Help Center\"}]}],[\"$\",\"li\",\"/blog\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/blog\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Blog\"}]}],[\"$\",\"li\",\"/careers\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/careers\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Careers\"}]}]]}]]}],[\"$\",\"div\",\"Company\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-semibold text-[#f0f0f2] mb-4\",\"children\":\"Company\"}],[\"$\",\"ul\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"li\",\"/about\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/about\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"About\"}]}],[\"$\",\"li\",\"/enterprise\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/enterprise\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Enterprise\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/contact\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/legal/privacy\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/legal/privacy\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Privacy\"}]}],[\"$\",\"li\",\"/security\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/security\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Security\"}]}],[\"$\",\"li\",\"/legal/terms\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/legal/terms\",\"className\":\"text-sm text-[#9090a0] hover:text-[#f0f0f2] transition-colors\",\"children\":\"Terms\"}]}]]}]]}]]]}],[\"$\",\"div\",null,{\"className\":\"mt-12 pt-8 border-t border-[#2e2e35] flex flex-col sm:flex-row items-center justify-between gap-4\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs text-[#5a5a6a]\",\"children\":\"© 2025 Spinini. All rights reserved.\"}],[\"$\",\"div\",null,{\"className\":\"flex gap-6\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/legal/terms\",\"className\":\"text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors\",\"children\":\"Terms\"}],[\"$\",\"$L6\",null,{\"href\":\"/legal/privacy\",\"className\":\"text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors\",\"children\":\"Privacy\"}],[\"$\",\"$L6\",null,{\"href\":\"/security\",\"className\":\"text-xs text-[#5a5a6a] hover:text-[#9090a0] transition-colors\",\"children\":\"Security\"}]]}]]}]]}]}]]}]],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/67fff5e63eb21a96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/386cc4aadb4d4b32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_e896d9\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var m=document.cookie.match(/(?:^|; )spinini-theme=([^;]+)/);var t=m?decodeURIComponent(m[1]):'dark';var e=document.documentElement;e.classList.remove('light-theme','midnight-theme');if(t==='light')e.classList.add('light-theme');else if(t==='midnight')e.classList.add('midnight-theme');}catch(e){}})();\"}}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$e\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$f\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$10\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L11\"],\"globalErrorComponent\":\"$12\",\"missingSlots\":\"$W13\"}]\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Launch SEO-Ready: Using the Built-in SEO Audit — Spinini Blog — Spinini\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Spinini's SEO Audit panel analyzes your published app and tells you exactly what to fix before you share it.\"}],[\"$\",\"meta\",\"4\",{\"name\":\"keywords\",\"content\":\"cloud IDE,AI coding,web development,deploy apps,browser IDE\"}],[\"$\",\"meta\",\"5\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"6\",{\"name\":\"googlebot\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"7\",{\"name\":\"google-site-verification\",\"content\":\"lDNKxmTI11rAbmVvmGDlRH-uHr_DXH4fAOy6\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"Spinini — Build, Run \u0026 Deploy Apps with AI\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Write a prompt, get a live app. Spinini AI plans, codes, runs and deploys your project in seconds.\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://spinini.com\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"Spinini\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Spinini — Build, Run \u0026 Deploy Apps with AI\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://spinini.com/opengraph-image?2ba89465b5cad0b5\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:title\",\"content\":\"Spinini — Build, Run \u0026 Deploy Apps with AI\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:description\",\"content\":\"Write a prompt, get a live app. No setup required.\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image\",\"content\":\"https://spinini.com/og-image.png\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/icon.svg?fb32c36e4ee568b2\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"23\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"5:null\n"])</script></body></html>