1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3179],{2910:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/articles/lovable-app-to-production",function(){return a(7371)}])},5543:(e,t,a)=>{"use strict";a.d(t,{Cy:()=>f,H2:()=>u,OH:()=>x,P:()=>m,Pq:()=>g,UL:()=>p,m7:()=>w});var r=a(7876),i=a(8230),n=a.n(i),s=a(8419),o=a(6075),l=a(6887),d=a(1298),c=a(8558),h=a(8300);function u(e){let{children:t}=e;return(0,r.jsx)("h2",{className:"mt-12 text-2xl md:text-[28px] font-bold text-white tracking-tight",children:t})}function m(e){let{children:t}=e;return(0,r.jsx)("p",{className:"mt-5 text-[15.5px] text-white/60 leading-relaxed",children:t})}function x(e){let{children:t}=e;return(0,r.jsx)("strong",{className:"text-white font-semibold",children:t})}function p(e){let{items:t}=e;return(0,r.jsx)("ul",{className:"mt-5 space-y-2.5",children:t.map((e,t)=>(0,r.jsxs)("li",{className:"flex gap-3 text-[15.5px] text-white/60 leading-relaxed",children:[(0,r.jsx)("span",{className:"mt-[9px] w-1.5 h-1.5 rounded-full bg-[#8CCB43] shrink-0"}),(0,r.jsx)("span",{children:e})]},t))})}function f(e){let{label:t,code:a}=e;return(0,r.jsxs)("div",{className:"mt-6 rounded-2xl border border-white/[0.08] bg-[#0C0F0A] overflow-hidden",children:[(0,r.jsx)("div",{className:"px-5 py-2.5 border-b border-white/[0.06] font-mono text-xs text-white/45",children:t}),(0,r.jsx)("pre",{className:"px-5 py-4 overflow-x-auto text-[13px] leading-relaxed font-mono text-white/80",children:(0,r.jsx)("code",{children:a})})]})}function g(e){let{children:t}=e;return(0,r.jsx)("div",{className:"mt-6 rounded-2xl border border-[#2C3D1B] bg-[#12190C] px-6 py-5 text-[15px] text-white/70 leading-relaxed",children:t})}function w(e){var t,a,i,u,m;let{meta:x,children:p}=e,f=[{"@context":"https://schema.org","@type":null!=(m=x.type)?m:"TechArticle",headline:x.h1,description:x.description,url:"".concat(h.W6).concat(x.slug),datePublished:x.datePublished,dateModified:x.datePublished,author:x.author?{"@type":"Person",name:x.author.name,...x.author.url?{url:x.author.url}:{},worksFor:{"@type":"Organization",name:"Verificate Pty Ltd",url:h.W6}}:{"@type":"Organization",name:"Verificate Pty Ltd",url:h.W6},publisher:{"@type":"Organization",name:"Verificate Pty Ltd",url:h.W6},mainEntityOfPage:"".concat(h.W6).concat(x.slug),...(null==(i=x.keywords)?void 0:i.length)?{keywords:x.keywords.join(", ")}:{},...(null==(u=x.citation)?void 0:u.length)?{citation:x.citation.map(e=>({"@type":"CreativeWork",name:e.name,url:e.url})),isBasedOn:x.citation.map(e=>e.url)}:{}}];return(null==(t=x.faq)?void 0:t.length)&&f.push((0,h.P$)(x.faq)),(0,r.jsxs)("div",{className:"bg-[#080A08] text-white/85 min-h-screen antialiased",children:[(0,r.jsx)(c.A,{title:x.title,path:x.slug,description:x.description,image:x.image,type:"article",jsonLd:f}),(0,r.jsx)(d.Nv,{}),(0,r.jsxs)("main",{id:"main-content",children:[(0,r.jsx)(d.wn,{className:"pt-28 sm:pt-36 pb-4",children:(0,r.jsxs)("div",{className:"max-w-3xl",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 text-white/40 font-mono text-xs",children:[(0,r.jsx)(n(),{href:"/articles",className:"text-[#8CCB43] hover:underline",children:"Articles"}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsx)(n(),{href:"/news",className:"hover:text-[#8CCB43] hover:underline",children:"News & press"}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsx)("span",{children:new Date(x.datePublished).toLocaleDateString("en-AU",{year:"numeric",month:"short",day:"numeric"})}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("span",{children:[x.readMinutes," min read"]})]}),(0,r.jsx)("h1",{className:"mt-5 text-3xl sm:text-4xl md:text-[44px] font-bold tracking-tight text-white leading-tight",children:x.h1})]})}),(0,r.jsx)(d.wn,{className:"pb-10",children:(0,r.jsx)("article",{className:"max-w-3xl",children:p})}),(null==(a=x.faq)?void 0:a.length)?(0,r.jsx)(d.wn,{className:"py-10 border-t border-white/[0.06]",children:(0,r.jsxs)("div",{className:"max-w-3xl",children:[(0,r.jsx)(d.YZ,{children:"FAQ"}),(0,r.jsx)("div",{className:"mt-6 space-y-6",children:x.faq.map(e=>(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-bold text-white",children:e.q}),(0,r.jsx)("p",{className:"mt-2 text-[15px] text-white/55 leading-relaxed",children:e.a})]},e.q))})]})}):null,"cti"===x.cta?(0,r.jsx)(d.wn,{className:"py-16",children:(0,r.jsxs)("div",{className:"rounded-3xl border border-[#2C3D1B] bg-gradient-to-b from-[#12190C] to-[#0B0F0A] px-8 md:px-14 py-12 text-center",children:[(0,r.jsx)("h2",{className:"text-2xl md:text-3xl font-bold text-white tracking-tight",children:"Bring a question your AI needs to get right."}),(0,r.jsx)("p",{className:"mt-4 text-white/60 max-w-2xl mx-auto",children:"Compile-Time Inference prepares your records before questions arrive, so supported answers and decisions can be checked against their evidence. Start with the questions where a wrong answer costs the most."}),(0,r.jsxs)("div",{className:"mt-8 flex flex-wrap justify-center gap-4",children:[(0,r.jsxs)(n(),{href:"/compile-time-inference",className:"inline-flex items-center gap-2 px-5 py-3 rounded-lg bg-[#8CCB43] hover:bg-[#7cbb37] text-[#0A0D0A] font-semibold transition-colors",children:["See Compile-Time Inference ",(0,r.jsx)(s.A,{className:"w-4 h-4"})]}),(0,r.jsxs)("a",{href:"/Verificate_Compile-Time_Inference_Brochure.pdf",download:"Verificate_Compile-Time_Inference_Brochure.pdf",className:"inline-flex items-center gap-2 px-5 py-3 rounded-lg border border-white/15 hover:border-[#8CCB43]/50 text-white font-semibold transition-colors",children:[(0,r.jsx)(o.A,{className:"w-4 h-4"})," Download the brochure (PDF)"]}),(0,r.jsxs)(n(),{href:"/contact?interest=compile-time-inference",className:"inline-flex items-center gap-2 px-5 py-3 rounded-lg border border-white/15 hover:border-[#8CCB43]/50 text-white font-semibold transition-colors",children:["Talk to us ",(0,r.jsx)(s.A,{className:"w-4 h-4"})]})]})]})}):(0,r.jsx)(d.wn,{className:"py-16",children:(0,r.jsxs)("div",{className:"rounded-3xl border border-[#2C3D1B] bg-gradient-to-b from-[#12190C] to-[#0B0F0A] px-8 md:px-14 py-12 text-center",children:[(0,r.jsx)("h2",{className:"text-2xl md:text-3xl font-bold text-white tracking-tight",children:"Put a real gate on your AI output."}),(0,r.jsx)("p",{className:"mt-4 text-white/60 max-w-2xl mx-auto",children:"Verificate Gate (available via MCP) runs deterministic checks plus an engineering-quality review on every AI output â in Claude Code, Cursor, Windsurf or any MCP client. 30-day free trial, no card required."}),(0,r.jsxs)("div",{className:"mt-8 flex flex-wrap justify-center gap-4",children:[(0,r.jsxs)(n(),{href:"/auth/signup",className:"inline-flex items-center gap-2 px-5 py-3 rounded-lg bg-[#8CCB43] hover:bg-[#7cbb37] text-[#0A0D0A] font-semibold transition-colors",children:[(0,r.jsx)(l.A,{className:"w-4 h-4"})," Start 30-day free trial"]}),(0,r.jsxs)(n(),{href:"/gate",className:"inline-flex items-center gap-2 px-5 py-3 rounded-lg border border-white/15 hover:border-[#8CCB43]/50 text-white font-semibold transition-colors",children:["See how the Gate works ",(0,r.jsx)(s.A,{className:"w-4 h-4"})]})]})]})})]})]})}},7371:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>l});var r=a(7876),i=a(8230),n=a.n(i),s=a(5543);let o={slug:"/articles/lovable-app-to-production",title:"Take Your Lovable App to Production â Without Hiring a Dev Team",h1:"Take your Lovable app to production",description:"Your Lovable app demos perfectly. Launching it is
1where solo founders get hurt: mocked flows, invented APIs, code that dies at real traffic. The senior review layer that gets a vibe-coded app from demo to launch â no dev team required.",datePublished:"2026-08-03",readMinutes:6,image:"https://verificate.ai/og-mcp.png",faq:[{q:"Can I ship a Lovable app to production without a developer?",a:"Yes â but the gap between a working demo and a launched product is exactly what senior engineers are normally paid to close: performance under real load, failure handling, and whether every API call actually exists. An automated review gate with veto power closes most of that gap for $30/month instead of a hire."},{q:"How do I review the code Lovable generated?",a:"Sync your Lovable project to GitHub, open it in Cursor, Claude Code or VS Code, and run every change through a validation gate before you deploy. Verificate's free tier needs no signup â 100 validations per machine to see what it catches in your app."},{q:"What bugs does AI-generated app code typically have?",a:"Three recurring classes: mocked or placeholder paths dressed up as done (a refund handler that returns success without moving money), hallucinated SDK calls that don't exist in the real API, and performance patterns that work with one user and collapse at a hundred â N+1 loops, blocking I/O, missing rate-limit handling."}]};function l(){return(0,r.jsxs)(s.m7,{meta:o,children:[(0,r.jsxs)(s.P,{children:["You described what you wanted, Lovable built it, and the demo works. People clicked through it, maybe someone said âI'd pay for this.â Now comes the part nobody demos: ",(0,r.jsx)(s.OH,{children:"real users, real money, real traffic"})," â and the uncomfortable fact that between a working demo and a launched product, funded startups put a CTO and a senior dev team. You have neither. That used to be the end of the story."]}),(0,r.jsx)(s.H2,{children:"Why the demo works and the launch doesn't"}),(0,r.jsx)(s.P,{children:"AI-generated app code fails in three specific ways, and none of them show while you're demoing:"}),(0,r.jsx)(s.UL,{items:[(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.OH,{children:"It fakes the hard part."})," A payment or email flow that returns success without doing the work â fine in a demo, catastrophic with a real customer. This is the single most common pattern in vibe-coded apps: the model mocks what it can't finish and calls it done."]}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.OH,{children:"It calls APIs that don't exist."})," A real verdict from our production gateway: ",(0,r.jsx)("em",{children:"âstripe.Inventory is not a valid Stripe SDK resource.â"})," The model invents plausible-looking calls with total confidence. You find out when a customer does."]}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.OH,{children:"It dies at real traffic."})," Another verbatim finding: ",(0,r.jsx)("em",{children:"âFor 100 items, this results in 100 sequential HTTP roundtrips, taking ~10â20 seconds and blocking the event loop.â"})," One user: instant. A hundred: timeouts everywhere."]})]}),(0,r.jsx)(s.H2,{children:"The workflow: Lovable â GitHub â gated changes"}),(0,r.jsxs)(s.P,{children:["Lovable syncs your project to GitHub. From there, every change â whether Lovable made it or you asked Cursor or Claude Code to make it â can pass a review gate ",(0,r.jsx)(s.OH,{children:"before it reaches your users"}),":"]}),(0,r.jsx)(s.UL,{items:[(0,r.jsx)(r.Fragment,{children:"1. In Lovable, connect your project to GitHub (Settings â GitHub)."}),(0,r.jsx)(r.Fragment,{children:"2. Open the repo in Cursor, Claude Code, VS Code or Windsurf â whichever you're comfortable in. You're not going to hand-read the code; you're going to have it reviewed."}),(0,r.jsxs)(r.Fragment,{children:["3. Add Verificate with ",(0,r.jsx)(n(),{href:"/gate",className:"text-[#8CCB43] hover:underline",children:"one click â no signup, 100 free validations"}),"."]}),(0,r.jsxs)(r.Fragment,{children:["4. Ask your assistant: ",(0,r.jsx)("em",{children:"âvalidate this app's payment flow with verificateâ"})," â or add the standing rule below so every change is gated automatically."]})]}),(0,r.jsx)(s.Cy,{label:"Standing rule (paste into CLAUDE.md or a Cursor rule)",code:"Before presenting any substantive code change as complete:\n1. Call val
1idate_ai_output on the change.\n2. If the verdict is REJECTED, fix the findings and re-validate.\n3. Never claim tests pass or systems work without proof."}),(0,r.jsx)(s.H2,{children:"What the gate actually is"}),(0,r.jsxs)(s.P,{children:["Verificate runs ",(0,r.jsx)(s.OH,{children:"17 deterministic reality gates"})," â mock and placeholder detection, invented-API checks, false-âdoneâ detection â and any one of them can veto. What survives gets scored by a frontier-model review against the same standards (performance, scalability, reliability) a senior engineer applies. The verdict is binary: approved, or rejected with a ranked list of what to fix. Your assistant fixes the findings and re-validates â you watch the loop instead of doing the review."]}),(0,r.jsx)(s.Pq,{children:"A senior review team costs $500k a year. This one is $30 a month â and the first 100 validations are free, no account, so you can point it at your actual app today and see what it catches before deciding anything."}),(0,r.jsxs)(s.P,{children:["The idea was yours. The demo is real. The gap in the middle â the part that used to need a team â is now a"," ",(0,r.jsx)(n(),{href:"/gate",className:"text-[#8CCB43] hover:underline",children:"one-click install"}),"."]})]})}}},e=>{e.O(0,[8096,8799,636,8792],()=>e(e.s=2910)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.