🚀 Deploy Cheat Sheet · Day 6 · pin this tab

From localhost to the world.

The one-page reference for shipping your MVP live: favicon sizes · social preview specs · SEO meta template · DNS records · Lighthouse thresholds · pre-launch gate · post-launch smoke test.

Stack: Lovable × GitHub × Supabase × Claude Cowork · with Sentry · PostHog · Stripe · Resend MCPs. No terminals · no manual server edits · no publishing without the gate.
🏆 5 golden rules · pin forever

Memorize these.

1 · Default favicon = amateur signal. Custom favicon = real product. Ship it before you share the URL.
2 · The OG image sells your app in DMs. Without one · every WhatsApp share is a blank ugly card.
3 · If Google can't find you · you don't exist. robots.txt · sitemap · Search Console. All in 10 min.
4 · Speed IS a feature. LCP < 2.5s or 53% of users bounce. Non-negotiable.
5 · Publish is a gate · not a button. Run P07 checklist. Any 🔴 CRITICAL = do not ship today.
⚡ 9 prompts · run order

The workshop kit · at a glance.

⚙ Phase 0 · SETUP

P00 · Context loader (2 min · required) — reads Project + memory + GitHub MCP · outputs 10-line brief · zero re-typing after this.

🎨 Phase 1 · ASSETS · ~18 min

P01 · Favicon + app icons (8 min) — design SVG · export via realfavicongenerator.net · install via Lovable prompt. Panel: Draplin + Bierut + Soueidan.
P02 · Social preview · OG + Twitter card (10 min) — 1200×630 image · full meta tags · verified on WhatsApp + LinkedIn + Facebook. Panel: Fried + Freiberg + Soueidan.

🏷 Phase 2 · META · 10 min

P03 · SEO meta tags (10 min) — title · description · canonical · lang · schema.org JSON-LD · validated in Rich Results Test. Panel: Solis + Mueller + Haynes.

🌐 Phase 3 · DOMAIN + INDEXING · 40 min

P04 · Custom domain + DNS + TLS (15 min) — purchase (if needed) · Lovable Domains → DNS records → TLS → www redirect → HSTS. Panel: Rauch + Evans + Hunt.
P05 · robots.txt + sitemap.xml + Search Console (10 min) — indexing in 24-48h vs 2 weeks unassisted. Panel: Mueller + Solis.
P06 · Lighthouse audit + Core Web Vitals (15 min) — mobile-first · fix biggest opportunities via Lovable prompts. Panel: Osmani + Roberts + Grigorik.

🚦 Phase 4 · LAUNCH · the gate + smoke test

P07 · Pre-launch checklist ⭐ FLAGSHIP (15 min · BLOCKING) — 20-item audit across 6 categories. Any 🔴 CRITICAL = do not publish today.
P08 · Post-launch smoke test (5 min) — 5 tests: incognito · mobile · 4-platform social preview · Google indexing · reverse-funnel replay.
🎨 P01 · Favicon size cheat table

Every size · what it's for.

FileSizeFormatPurpose
favicon.ico16 · 32 · 48 (multi)ICOBrowser tab · bookmark bar · classic favicon
icon.svgvectorSVGModern browsers · sharp at any size · themes
apple-touch-icon.png180×180PNGiOS home screen · solid bg required
android-chrome-192x192.png192×192PNGAndroid home screen · PWA install
android-chrome-512x512.png512×512PNGAndroid splash · high-DPI · store listings
site.webmanifestJSONtextPWA metadata · theme color · icon references
Fast path: generate all six from ONE 512×512 source SVG via realfavicongenerator.net. Free · 60 sec · download the ZIP · drag files into Lovable public/ folder.
🖼 P02 · Social preview specs

The image that sells your app.

PlatformDimensionsFileMax size
Open Graph (Facebook · LinkedIn · WhatsApp · iMessage · Slack)1200 × 630PNG< 300 KB
Twitter · large card1200 × 600 (or reuse OG)PNG< 5 MB
Safe zone · avoid crops1080 × 540 centerKeep critical content here

1 · Product name

72–96pt · Instrument Serif or brand heading font · high contrast (WCAG AA · 4.5:1)

2 · Tagline

32–40pt · 1 line max · brand body font · below product name

3 · Logo mark

Bottom-left or top-left · small · uses P01 favicon SVG

WhatsApp cache trap: WhatsApp caches OG previews for 7 days. If you iterate the image later · users won't see the update. Ship it right the first time · or append ?v=2 to bust cache.
🏷 P03 · SEO meta template · copy-paste

Every page. Every route.

<!-- Primary --> <title>[Primary benefit] — [Product name]</title> <meta name="description" content="[What it does]. [How it's different]. [Soft CTA]."> <link rel="canonical" href="https://[my-domain]/[route]"> <html lang="en"> <!-- Open Graph --> <meta property="og:title" content="[Product] — [tagline]"> <meta property="og:description" content="[1-line]"> <meta property="og:image" content="https://[my-domain]/og-image.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta property="og:image:alt" content="[describe image]"> <meta property="og:url" content="https://[my-domain]"> <meta property="og:type" content="website"> <!-- Twitter --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="[Product] — [tagline]"> <meta name="twitter:description" content="[1-line]"> <meta name="twitter:image" content="https://[my-domain]/og-image.png"> <!-- Icons + theme --> <link rel="icon" href="/favicon.ico" sizes="any"> <link rel="icon" href="/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="manifest" href="/site.webmanifest"> <meta name="theme-color" content="[brand-primary-hex]">
Ask Lovable: "Add this meta block to my index.html <head>. Replace bracketed placeholders with values from my Foundation Doc. Do not duplicate existing tags."
🌐 P04 · DNS records · what goes where

Two records. That's it.

TypeHostValueTTLPurpose
A@[Lovable IP from Lovable UI]300 (5 min)Apex domain → Lovable
CNAMEwww[Lovable subdomain from Lovable UI]300www → apex
TXT@google-site-verification=[token]3600Search Console (P05)

Registrar picks

Cloudflare · at-cost pricing · best DNS UX
Namecheap · cheap · simple
Porkbun · cheapest year 1

TLS

Lovable auto-provisions Let's Encrypt · no manual config · appears within 2-5 min after DNS propagates

Propagation

Usually 5 min · sometimes 48h
Check via dnschecker.org · see which regions resolved

Cloudflare-only tip: set proxy status to "DNS only" (grey cloud) during first setup. Switch to proxied (orange) after TLS verified. Otherwise Cloudflare's TLS conflicts with Lovable's Let's Encrypt.
🤖 P05 · robots.txt + sitemap.xml · copy-paste

Tell Google what to crawl.

robots.txt

User-agent: * Allow: / Disallow: /admin Disallow: /api Sitemap: https://[my-domain]/sitemap.xml

sitemap.xml (minimal)

<urlset xmlns="..."> <url> <loc>https://[my-domain]/</loc> <lastmod>2026-07-13</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> </urlset>
Search Console fast-path: after submitting sitemap · use URL Inspection tool → paste homepage → "Request Indexing." Pushes Google to crawl within 24h · not 2 weeks.
⚡ P06 · Lighthouse thresholds

Green means ship.

Performance

≥ 90 mobile · ≥ 95 desktop

Accessibility

≥ 95 · WCAG AA

Best Practices

≥ 95

SEO

= 100 · after P03

Core Web Vitals · all must be GREEN

MetricTargetWhat it measuresTop fix
LCP · Largest Contentful Paint< 2.5sHow fast the biggest element loadsOptimize hero image · WebP · lazy-load below fold
CLS · Cumulative Layout Shift< 0.1How much stuff jumps around during loadSet width/height on all images + iframes
INP · Interaction to Next Paint< 200msHow fast the app responds to clicksBreak up long JS tasks · debounce heavy handlers
FCP · First Contentful Paint< 1.8sWhen something first appearsInline critical CSS · preload primary font
TBT · Total Blocking Time< 200msHow long the main thread is blockedCode-split routes · defer non-critical JS
🚦 P07 · Pre-launch checklist · the GATE

🔴 Any critical = do not publish today.

1 · Assets (P01-P02)

Favicon renders · Apple Touch Icon set · OG image visible on WhatsApp · Facebook Debugger clean

2 · Meta (P03)

Unique title + description per route · JSON-LD validates · lang set

3 · Domain + TLS (P04)

HTTPS green lock · www → apex works · HSTS present · http auto-upgrades

4 · Indexing (P05)

robots.txt live · sitemap live · Search Console verified + submitted

5 · Performance (P06)

Lighthouse ≥ 90 mobile · all Core Web Vitals GREEN · first screen < 2 sec

6 · Safety (Day 5)

Zero 🔴 CRITICAL from P05 security audit · zero P0 bugs from P04 bug hunter

If any 🔴 CRITICAL: do NOT send the WhatsApp broadcast. Fix · re-run · then publish. Save the passing audit to Project-Plan.md → Launches · you'll want it for the pitch deck (Day 9).
🔎 P08 · Post-launch smoke test · 5 min

Fresh eyes · right after publish.

The moment: if all 5 pass · screenshot the WhatsApp preview · post to pod thread with "WE ARE LIVE. Come try: [URL]" · tag @meganmartinsone · #10DaystoShip.
📋 Post-workshop checklist · do TONIGHT

Before Tuesday's Growth Day.

By Tuesday 16:00 (User Sprint kickoff): your app is live · shareable · fast · indexed · with a WhatsApp preview that sells. The 24-hour sprint starts with a URL that doesn't apologize for itself.
🚀 Tomorrow · Tuesday Jul 14 · Growth Day

App is live. Now show it.

📅 Tonight (Mon)

Publish gate passed

App live at custom domain · WhatsApp preview works · Google can find you

🎤 Tue 11 AM

Nicole Pern keynote

Build in Public · Content Creation · Monetization workshop

🏃‍♀️ Tue 16:00

24-hour User Sprint

Show your live app to as many users as possible · total signups + waitlist = winner

The compounding play: P01–P06 done tonight = every WhatsApp share on Tue drops a beautiful preview · every user landing sees your custom domain · every Google search finds you. Deploy Day is the day your app becomes shareable.