<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Product Compass: Vibe Engineering]]></title><description><![CDATA[Building real SaaS products with AI. No coding.]]></description><link>https://www.productcompass.pm/s/vibe-engineering</link><image><url>https://substackcdn.com/image/fetch/$s_!Isz9!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F761d3970-dad7-483b-8fcf-9fada16e0d33_1080x1080.png</url><title>The Product Compass: Vibe Engineering</title><link>https://www.productcompass.pm/s/vibe-engineering</link></image><generator>Substack</generator><lastBuildDate>Mon, 04 May 2026 19:55:48 GMT</lastBuildDate><atom:link href="https://www.productcompass.pm/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Paweł Huryn]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[huryn@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[huryn@substack.com]]></itunes:email><itunes:name><![CDATA[Paweł Huryn]]></itunes:name></itunes:owner><itunes:author><![CDATA[Paweł Huryn]]></itunes:author><googleplay:owner><![CDATA[huryn@substack.com]]></googleplay:owner><googleplay:email><![CDATA[huryn@substack.com]]></googleplay:email><googleplay:author><![CDATA[Paweł Huryn]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Rise of Vibe Engineering: Free Courses, Guides, and Resources]]></title><description><![CDATA[Vibe coding is dead. To build with AI, you need engineering skills. Good news: it&#8217;s not rocket science.]]></description><link>https://www.productcompass.pm/p/vibe-coding-vs-vibe-engineering</link><guid isPermaLink="false">https://www.productcompass.pm/p/vibe-coding-vs-vibe-engineering</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Fri, 19 Sep 2025 17:41:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/064ded8d-2c62-412d-b1d3-8626496c3a5f_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, Pawe&#322; here.</p><p>In recent weeks, I&#8217;ve been researching Replit Agent 3, Google Jules, and OpenAI Codex.</p><p>I try to avoid hype and stay realistic about what AI can (and can&#8217;t) do today. But here I have to admit: the progress in no-coding is crazy. What used to take 2&#8211;3 sprints (2 weeks each) can now be done in just 1&#8211;2 days.</p><p>For example, I recently decided to add video courses to Accredia to replace Kajabi (~$200/month). After only 6 hours, I&#8217;m already testing the solution.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RPZw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RPZw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 424w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 848w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 1272w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RPZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png" width="1945" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140111,&quot;alt&quot;:&quot;OpenAI Codex autonomously implemented a few large epics in just a few prompts&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/174038533?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F819dea1b-d292-4260-a614-afd54eeb208b_1945x802.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="OpenAI Codex autonomously implemented a few large epics in just a few prompts" title="OpenAI Codex autonomously implemented a few large epics in just a few prompts" srcset="https://substackcdn.com/image/fetch/$s_!RPZw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 424w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 848w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 1272w, https://substackcdn.com/image/fetch/$s_!RPZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef52d14-7596-4cd2-a0cc-27a1c247870c_1945x797.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">OpenAI Codex autonomously implemented a few large epics in just a few prompts</figcaption></figure></div><p>At the same time, I realized that vibe-coding is not enough. To build with AI, you don&#8217;t need to code. But you do need basic engineering skills.</p><p>Here&#8217;s how I see the difference:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vnls!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vnls!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vnls!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png" width="1200" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vibe Coding vs. Vibe Engineering&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Vibe Coding vs. Vibe Engineering" title="Vibe Coding vs. Vibe Engineering" srcset="https://substackcdn.com/image/fetch/$s_!Vnls!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Vnls!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c28970b-96e6-4bbe-8d44-31ea5da0ff0b_1200x1500.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/p/vibe-coding-vs-vibe-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/p/vibe-coding-vs-vibe-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>Luckily, it&#8217;s not rocket science. </p><p>In this special post I summarize all key resources.</p><div><hr></div><p><em>From now on, all posts related to <strong><a href="https://www.productcompass.pm/s/building-saas-ai">Building SaaS with AI</a></strong> will be published in a dedicated section. I&#8217;ve already migrated the old content there.</em></p><div><hr></div><h2>The Best Free Resources</h2><p>Those resources cover all the basics. You need to understand just enough to prompt and challenge coding agents:</p><ul><li><p><a href="https://github.com/ByteByteGoHq/system-design-101">System Design 101 by ByteByteGo (GitHub)</a></p></li><li><p><a href="https://bytebytego.com/guides/">Engineering Visual Guides</a></p></li><li><p><a href="https://youtu.be/dU7GwCOgvNY">Become a Supabase Pro in 1.5 Hours (1:26:39)</a></p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Overview">Overview of HTTP (MDN)</a></p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods">HTTP Request Methods (MDN)</a></p></li><li><p><a href="https://youtu.be/2YIgGdUtbXM">Node.js + Express.js in 17 Minutes</a></p></li><li><p><a href="https://youtu.be/wIyHSOugGGw?si=MXqOmaHsL-ZKI5Vn">Every React Concept Explained in 12 Minutes</a></p></li><li><p><a href="https://youtu.be/ahCwqrYpIuM">TypeScript Basics in 12 Minutes</a></p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP">CSP Guide (MDN)</a></p></li><li><p><a href="https://owasp.org/www-project-top-ten/">OWASP Top 10</a></p></li><li><p><a href="https://docs.lovable.dev/introduction/welcome">Getting Started with Lovable</a></p></li><li><p><a href="https://youtu.be/DaXQ5L7r7Lg">Replit AI Agent Full Course (2:08:45)</a></p></li><li><p><a href="https://youtu.be/AURnISajubk?si=BT1rR7eVjRf3eVS3">n8n Masterclass (2:10:35)</a></p></li><li><p><a href="https://clerk.com/docs/integrations/databases/supabase">How to Integrate Supabase with Clerk</a></p></li></ul><div><hr></div><h2>Guides for Those Building AI-Powered Products</h2><p>Essential resources for AI product builders: AI strategy, evals, and security:</p><ul><li><p><a href="https://www.productcompass.pm/p/openai-how-to-build-ai-product-strategy">AI Product Strategy</a></p></li><li><p><a href="https://www.productcompass.pm/p/prompting-techniques">14 Prompting Techniques</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-evals">AI Evals</a></p></li><li><p><a href="https://www.productcompass.pm/p/evaluating-ai-products-error-analysis">Error Analysis</a></p></li><li><p><a href="https://www.productcompass.pm/p/context-engineering">Context Engineering</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-agent-architectures">AI Agent Architectures</a></p></li><li><p><a href="https://www.productcompass.pm/p/penetration-testing-performance-testing-prompts">17 Penetration &amp; Performance Testing Prompts</a></p></li><li><p><a href="https://www.productcompass.pm/p/distribution-framework-ai-products">3-Layer AI Distribution Framework</a></p></li></ul><div><hr></div><h2>How to Learn by Doing </h2><p>Practical examples. No coding, just tech understanding:</p><ul><li><p><a href="https://www.productcompass.pm/p/llm-api-frameworks-examples">LLM Chatbot</a></p></li><li><p><a href="https://www.productcompass.pm/p/how-to-build-a-rag-chatbot">RAG Chatbot</a></p></li><li><p><a href="https://www.productcompass.pm/p/n8n-mcp-servers-uv">Voice Agent</a></p></li><li><p><a href="https://www.productcompass.pm/p/multi-agent-research-system">Multi-Agent Research System</a></p></li><li><p><a href="https://www.productcompass.pm/p/lovable-branching">Separate DEV/TEST/PROD</a></p></li><li><p><a href="https://www.productcompass.pm/p/full-stack-app-with-lovable">Full-Stack App with Lovable (2:00:00)</a></p></li></ul><div><hr></div><h2>My Favorite Tools for Vibe Engineers</h2><ul><li><p><strong>Database:</strong> Supabase</p></li><li><p><strong>Vector store:</strong> Pinecone</p></li><li><p><strong>Coding agents:</strong> Lovable (easiest), Replit, Cursor, OpenAI Codex (most advanced)</p></li><li><p><strong>Hosting:</strong> Netlify, Vercel</p></li><li><p><strong>Authentication:</strong> Clerk</p></li><li><p><strong>Hardening:</strong> Cloudflare</p></li><li><p><strong>Transactional emails (avoid SPAM):</strong> Postmark</p></li><li><p><strong>SEO for SPA apps:</strong> Prerender</p></li><li><p><strong>Cache:</strong> Redis + Netlify</p></li><li><p><strong>Storage:</strong> S3</p></li><li><p><strong>Analytics:</strong> Clarity, PostHog</p></li><li><p><strong>Logging:</strong> Logtail</p></li><li><p><strong>Metrics:</strong> Grafana</p></li><li><p><strong>Feature flagging:</strong> GrowthBook</p></li><li><p><strong>System status:</strong> Uptimerobot</p></li><li><p><strong>Payments:</strong> Stripe</p></li><li><p><strong>Agentic workflows:</strong> n8n (easiest), LangChain (most advanced)</p></li><li><p><strong>Evals off-the-shelf:</strong> LangSmith</p></li></ul><div><hr></div><p>Next, we&#8217;ll cover:</p><ul><li><p>A practical step-by-step evals guide anyone can repeat + eval vendors comparison</p></li><li><p>Next week we&#8217;ll finalize <a href="https://www.productcompass.pm/p/ai-pm-learning-program">C10:LLM Systems Practitioner PM from the AI PM Learning Program</a> by adding:</p><ul><li><p>Advanced fine-tuning techniques</p></li><li><p>n8n LLM workflows to automate your work</p></li></ul></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[17 Penetration & Performance Testing Prompts for Vibe Coders]]></title><description><![CDATA[A complete set of prompts, tools, and resources to uncover attack vectors, identify critical issues, boost performance, and guide future improvements.]]></description><link>https://www.productcompass.pm/p/penetration-testing-performance-testing-prompts</link><guid isPermaLink="false">https://www.productcompass.pm/p/penetration-testing-performance-testing-prompts</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Mon, 25 Aug 2025 07:40:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5c1cb3a3-751a-401b-8904-43025a3449b1_1370x920.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, <a href="https://www.linkedin.com/in/pawel-huryn/">Pawe&#322;</a> here. Welcome to the <strong>premium edition</strong> of The Product Compass!</p><p>Every week, I share actionable insights and resources for AI PMs.</p><p>Consider joining the community of 121K+ and upgrading your account for the full experience: </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>The recent posts were published without a paywall or with huge free sections. This time, we&#8217;re prioritizing a <strong>premium experience</strong>.</p><p>In today&#8217;s post:</p><ol><li><p>Accredia: Status, Security Challenge, and the $4,500 Winners</p></li><li><p>&#128274;17 Penetration &amp; Performance Testing Prompts for Vibe Coders</p><ol><li><p>Group 1: Six Prompts to Reverse-Engineer and Document Your App</p></li><li><p>Group 2: Custom Instructions / Project Knowledge</p></li><li><p>Group 3: Seven Powerful Prompts to Stress-Test Security</p></li><li><p>Group 4: Three Prompts To Boost Performance</p></li></ol></li><li><p>Vibe Coding Security &amp; Performance: 13 Essential Tools And Resources</p></li><li><p>Conclusions</p></li></ol><p>Let's dive in.</p><div><hr></div><h2>1. Accredia: Status, Security Challenge, and the $4,500 Winners</h2><h3>Product Status</h3><p>I&#8217;m back from vacation and continuing work on my no-code B2B2C SaaS PoC.</p><p><a href="https://www.accredia.io/">Accredia is live</a>. I&#8217;ve migrated certificates for all three video courses: <a href="https://www.productcompass.pm/p/cpdm">Product Discovery</a>, <a href="https://www.productcompass.pm/p/product-vision-strategy-objectives-course">Strategy</a>, and <a href="https://www.productcompass.pm/p/product-innovation-masterclass">Innovation</a>.</p><p>My public profile: <a href="https://www.accredia.io/users/pawel-huryn">https://www.accredia.io/users/pawel-huryn</a></p><p>Next:</p><ol><li><p>If you earned a certificate, you should have received a notification. Sign up using your email address.</p></li><li><p>I&#8217;ve started onboarding the first two organizations. I hope to learn a lot! &#128578;</p></li><li><p>This is just a PoC, but I&#8217;m going to try to win the first <a href="https://www.productcompass.pm/p/5-gtm-principles-with-frameworks-templates">beachhead segment</a>.</p></li></ol><blockquote><p>I&#8217;m also creating a <strong>simple, ready-to-use template</strong> to help anyone<strong> vibe-code a</strong> <strong>production-ready side project</strong>. I realized this will require covering the basics like Supabase or Clerk, and we&#8217;ll get into that too.</p></blockquote><p>In the next few posts, we&#8217;ll focus more on Strategy, Discovery, and AI PM topics.</p><h3>Security Challenge and the $4,500 Winners</h3><p>Before importing real student data, I used AI to audit security and permissions. Then, organized a public security challenge on <a href="https://www.linkedin.com/posts/pawel-huryn_certificate-pawe%C5%82-huryn-continuous-product-activity-7363274887865450498-aDvD?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAZYwpMBkPvyx7IKi3lT1UM5CRP1Q1d8-w4">LinkedIn</a> and <a href="https://www.reddit.com/r/lovable/comments/1muft7z/1500_paypal_for_the_first_3_people_who_hack_my/">Reddit</a> and promised the first three people to hack the platform to win $1,500 each.</p><p>Over 80+ developers created student accounts to hack the app. I received 12+ detailed reports and rewarded three people:</p><ul><li><p><a href="https://www.linkedin.com/in/williamlepommelet/overlay/about-this-profile/">William LE POMMELET</a>: XSS vulnerability for 3 fields (a real issue I had missed; this would allow attackers to target visitors of a specific public profile)</p></li><li><p><a href="https://www.reddit.com/user/wrighte0/">u/wrighte0</a>: CSP issues (impossible to leverage right now, but essential to cover).</p></li><li><p><a href="https://www.linkedin.com/in/viniciuslage/overlay/about-this-profile/">Vinicius Lage</a>: A theoretical vector of attack using a Clerk token from another instance (impossible to leverage right now, but too important to ignore).</p></li></ul><p>I learned a lot. Thanks to those and other reports, including reverse-engineering failed attack attempts documented by participants, the framework has become stronger than ever &#128591;</p><div><hr></div><h2>2. 17 Penetration &amp; Performance Testing Prompts for Vibe Coders</h2><p>Based on the recent experience, I&#8217;ve refined a set of prompts that will help you:</p><ol><li><p>Understand your system, its architecture, and components.</p></li><li><p>Identify common mistakes, best practices, and areas for improvement.</p></li><li><p>Detect possible attack vectors, critical vulnerabilities, and future improvements.</p></li><li><p>Boost the performance of your product as it scales by addressing typical issues.</p></li></ol><p>Notes: </p><ul><li><p>The prompts are not Lovable-specific. They will work with Cursor, Replit, etc., too.</p></li><li><p>If you work with Lovable, make sure you&#8217;re using the <a href="https://lovable.dev/blog/agent-mode-beta">Agent Mode</a>.</p></li></ul><h3>Group 1: Six Prompts to Reverse-Engineer and Document Your App</h3><p>First, we need to document the system. This will help us detect the first critical issues and create the foundation for future work.</p><p>Prompts available in the Notion collection:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XjMR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XjMR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 424w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 848w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 1272w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XjMR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png" width="860" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:860,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75601,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XjMR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 424w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 848w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 1272w, https://substackcdn.com/image/fetch/$s_!XjMR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4db12f-d10c-4481-a628-b4abe4053d44_860x275.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Six prompts to reverse-engineer and document an app</figcaption></figure></div><p>After major changes, adjust the prompts and run them again to update the existing documentation by starting with: </p><p><em>&#8220;Think step-by-step. Reverse-engineer the codebase to <strong>update</strong> [the rest of the prompt].&#8221;</em></p><p><strong>Example result 1: System Architecture Documentation</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZasM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZasM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 424w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 848w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 1272w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZasM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png" width="1909" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1909,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197056,&quot;alt&quot;:&quot;Lovable System Architecture Documentation&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7960cf57-eb0b-4e60-ba18-c161471e6ac3_2125x820.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable System Architecture Documentation" title="Lovable System Architecture Documentation" srcset="https://substackcdn.com/image/fetch/$s_!ZasM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 424w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 848w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 1272w, https://substackcdn.com/image/fetch/$s_!ZasM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a7f04a-0fc4-4e08-bd78-fc514942171c_1909x820.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A fragment of System Architecture Documentation</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://gist.github.com/phuryn/1f4baa9b766f658f957d6ab9f6871094&quot;,&quot;text&quot;:&quot;See the full file on GitHub&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://gist.github.com/phuryn/1f4baa9b766f658f957d6ab9f6871094"><span>See the full file on GitHub</span></a></p><p>Note that I didn't address all suggestions in the first iteration - I talked with an agent through the consequences and mitigations to <strong>learn fast and responsibly</strong>. The final reusable template will include additional suggestions.</p><p><strong>Example 2: Roles and Permissions Documentation</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9JoK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9JoK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 424w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 848w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 1272w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9JoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png" width="927" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:927,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81074,&quot;alt&quot;:&quot;Lovable, Roles and Permissions Documentation&quot;,&quot;title&quot;:&quot;Lovable, Roles and Permissions Documentation&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable, Roles and Permissions Documentation" title="Lovable, Roles and Permissions Documentation" srcset="https://substackcdn.com/image/fetch/$s_!9JoK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 424w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 848w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 1272w, https://substackcdn.com/image/fetch/$s_!9JoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b839212-670a-4c69-b9f0-32cccaeef4b8_927x687.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A fragment of Roles and Permissions Documentation (roles.md)</figcaption></figure></div><p><strong>Example 3: Scheduled Work Documentation</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Iv_U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Iv_U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 424w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 848w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 1272w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Iv_U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png" width="922" height="317" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/142766e3-5750-45ce-98eb-582b15e19014_922x317.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:317,&quot;width&quot;:922,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38341,&quot;alt&quot;:&quot;Lovable Cron Jobs Documentation&quot;,&quot;title&quot;:&quot;Lovable Scheduled Work (CRON) System Documentation, Clerk&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Cron Jobs Documentation" title="Lovable Scheduled Work (CRON) System Documentation, Clerk" srcset="https://substackcdn.com/image/fetch/$s_!Iv_U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 424w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 848w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 1272w, https://substackcdn.com/image/fetch/$s_!Iv_U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F142766e3-5750-45ce-98eb-582b15e19014_922x317.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A piece of Scheduled Work Documentation (cron.md)</figcaption></figure></div><h3>Group 2: Custom Instructions</h3><p>Documenting your system was the first step. Next, we need to make sure the coding agent can easily find that information.</p><p>The best way is to reference these documents in the custom instructions attached to each user prompt. </p><p>In Lovable, they're called &#8220;project knowledge.&#8221; Many coding agents support the OpenAI's <a href="https://github.com/openai/agents.md">AGENTS.md</a> format.</p><p>A ready to use template from the Notion collection:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1-rg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1-rg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 424w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 848w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 1272w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1-rg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png" width="915" height="80" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:80,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20923,&quot;alt&quot;:&quot;Lovable Project Knowledge&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Project Knowledge" title="Lovable Project Knowledge" srcset="https://substackcdn.com/image/fetch/$s_!1-rg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 424w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 848w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 1272w, https://substackcdn.com/image/fetch/$s_!1-rg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cc39f3-b27d-474d-a5fe-55fca457aead_915x80.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Custom instructions template</figcaption></figure></div><h3>Group 3: Seven Powerful Prompts to Stress-Test Security and Permissions</h3><p>Those are the prompts that will challenge your app the most. Surprisingly, I get much better results when persuading the AI that someone has already hacked the app.</p><p>Prompts available in the Notion collection:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!llgy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!llgy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 424w, https://substackcdn.com/image/fetch/$s_!llgy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 848w, https://substackcdn.com/image/fetch/$s_!llgy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 1272w, https://substackcdn.com/image/fetch/$s_!llgy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!llgy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png" width="1052" height="430" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:430,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122321,&quot;alt&quot;:&quot;Lovable Seven Powerful Prompts to Stress-Test Security and Permissions Vibe Coding&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Seven Powerful Prompts to Stress-Test Security and Permissions Vibe Coding" title="Lovable Seven Powerful Prompts to Stress-Test Security and Permissions Vibe Coding" srcset="https://substackcdn.com/image/fetch/$s_!llgy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 424w, https://substackcdn.com/image/fetch/$s_!llgy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 848w, https://substackcdn.com/image/fetch/$s_!llgy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 1272w, https://substackcdn.com/image/fetch/$s_!llgy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706af207-e00c-46ee-9d7c-e156fc4a805d_1052x430.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Seven prompts to stress-test security and permissions</figcaption></figure></div><h3>Group 4: Three Prompts To Boost Performance</h3><p>The last three prompts cover the most common performance issues:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EaKV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EaKV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 424w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 848w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 1272w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EaKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png" width="1125" height="207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0575d359-249a-4d29-8bef-719435d03e78_1125x207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:207,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56425,&quot;alt&quot;:&quot;Lovable Three Prompts To Boost Performance&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Three Prompts To Boost Performance" title="Lovable Three Prompts To Boost Performance" srcset="https://substackcdn.com/image/fetch/$s_!EaKV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 424w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 848w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 1272w, https://substackcdn.com/image/fetch/$s_!EaKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0575d359-249a-4d29-8bef-719435d03e78_1125x207.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Three prompts to boost performance</figcaption></figure></div><h3>The Premium Notion Collection Also Contains</h3><p>Our Notion collection is growing fast and also contains:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0xPB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0xPB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 424w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 848w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 1272w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0xPB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png" width="588" height="450.5361077111383" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:817,&quot;resizeWidth&quot;:588,&quot;bytes&quot;:135211,&quot;alt&quot;:&quot;Product Management Notion Collection&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/171785602?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31d1fe4b-68ae-4a22-bd59-cdff48d338e3_825x680.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Product Management Notion Collection" title="Product Management Notion Collection" srcset="https://substackcdn.com/image/fetch/$s_!0xPB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 424w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 848w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 1272w, https://substackcdn.com/image/fetch/$s_!0xPB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3770e52-b24f-4ac6-83a0-44bf227cdfa2_817x626.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Get Access By Clicking The Link Below</h3><p>The prompts are way too long for this post. </p><p>Please use the link below:</p>
      <p>
          <a href="https://www.productcompass.pm/p/penetration-testing-performance-testing-prompts">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Lovable Just Killed Two Apps? Create Your Own SaaS Without Coding in 2 Days]]></title><description><![CDATA[From Dropbox and DocuSign clones to your own million-dollar idea: here&#8217;s how I built Accredia in just 16 hours.]]></description><link>https://www.productcompass.pm/p/lovable-accredia-digital-certificates</link><guid isPermaLink="false">https://www.productcompass.pm/p/lovable-accredia-digital-certificates</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Mon, 11 Aug 2025 14:38:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9328bd84-22f7-4f26-b48a-76b63e92f300_1400x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been repeating that with <strong>Lovable,</strong> anyone can <strong>build</strong> <strong>real products</strong> without coding.</p><p>Yet, people:</p><ul><li><p>Claim it&#8217;s just a prototyping tool</p></li><li><p>Call it &#8220;vibe-coding&#8221; (I&#8217;m allergic to the term)</p></li><li><p>Insist you need engineers to build real products</p></li></ul><p>So, I decided to continue my PoC, and today I&#8217;m launching my first real SaaS.</p><p>My goals:</p><ul><li><p>Prove it&#8217;s possible. You do not need to code</p></li><li><p>Demonstrate and explain the next steps, like GTM and getting the first customers</p></li></ul><p>You can use the same techniques to:</p><ul><li><p>Create a new product or clone an existing product like Typeform or DocuSign (standard digital signatures - enough for most US companies)</p></li><li><p>Create an extra revenue stream.</p></li><li><p>Become the Product Manager of your product without asking for permission</p></li></ul><p>In this post:</p><ol><li><p>Accredia: A Certificate Management Platform</p></li><li><p>No-Code SaaS Secure Solution Architecture</p></li><li><p>&#128274; Three Lovable Prompts You Can Reuse to Start Building</p></li><li><p>&#128274; What&#8217;s Next and Conclusion</p></li></ol><div><hr></div><p><em>Hey, Pawel here. I&#8217;m on vacation 10-21 August, but our posts will not be disturbed.</em></p><p><em>We will be discussing launching apps in detail during office hours after my return.</em></p><p><em>Consider subscribing and upgrading your account for the full experience:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>1. Accredia: A Certificate Management Platform</h2><p><a href="https://www.accredia.io">Accredia</a> allows anyone to easily issue, receive, and share digital credentials.</p><p>Why credentials, not a sexier app like Dropbox, DocuSign, or Typeform?</p><p>I started with <strong>a problem I knew</strong>: existing digital certificate solutions are too expensive for many product, Agile, and tech trainers.</p><p>For example:</p><ul><li><p><strong>Accredible</strong>: ~$960 for 1,000 certificates (my deal)</p></li><li><p><strong>Credly</strong>: ~$5,000 for 1,000 badges</p></li></ul><p>Accredia already provides 80% of Accredible&#8217;s value. A short demo:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c8510fe1-4944-4457-bdab-12f25dcbb30e&quot;,&quot;duration&quot;:null}"></div><p>In the first version:</p><ul><li><p>Multiple organizations can use the platform simultaneously</p></li><li><p>Each organization can invite multiple users (Admins, Members)</p></li><li><p>Administrators can:</p><ul><li><p>Define and manage courses</p></li><li><p>Use a drag &amp; drop certificate editor</p></li><li><p>Issue certificates manually or using a spreadsheet</p></li><li><p>Manage organization members</p></li><li><p>Manage the organization&#8217;s subscription, make payments, download invoices</p></li></ul></li><li><p>Students can:</p><ul><li><p>Edit their public profiles (including the URL)</p></li><li><p>Publish/unpublish their learning profiles and certificates</p></li><li><p>Generate shareable links for social media</p></li></ul></li><li><p>Unauthenticated users can:</p><ul><li><p>Visit public student profiles</p></li><li><p>Verify whether a public certificate is authentic</p></li></ul></li></ul><div class="poll-embed" data-attrs="{&quot;id&quot;:359039}" data-component-name="PollToDOM"></div><blockquote><p>Building this took me just ~16 hours, 340 Lovable credits, and $80. If we continue, after another 16-24 hours, we&#8217;ll achieve feature parity (better social previews, integrated social platform sharing).</p></blockquote><p>Why would anyone pay for Accredible?</p><p>Next:</p><ul><li><p>I&#8217;m starting to migrate a few thousand of our certificates from Accredible. I hope people will share them; a growth loop for the platform and for organizations.</p></li><li><p>Accredia is free for up to 1,000 certificates/year for all premium subscribers. Others cover basic infrastructure costs. If you have students, email me at pawel@productcompass.pm to join the beta.</p></li><li><p>GTM: Social media + SEO: &#8220;alternatives to X,&#8221; &#8220;X vs. Y,&#8221; and similar. I&#8217;ll leverage my high-domain-authority site (productcompass.pm). </p></li><li><p>Trying to win the first <a href="https://www.productcompass.pm/i/147027471/go-small-before-you-can-win-big-time-beachhead-strategy">Beachhead Segment</a>.</p></li></ul><p>[Edited]</p><p>I highly recommend those feature and price comparison pages  of digital certificates and digital credentials solutions:</p><ul><li><p><a href="https://www.productcompass.pm/p/kajabi-alternative">The #1 Kajabi Alternative: Video Courses, Digital Credentials</a></p></li><li><p><a href="https://www.productcompass.pm/p/credly-alternative">The #1 Credly Alternative: Certificate Management, Digital Credentials</a></p></li><li><p><a href="https://www.productcompass.pm/p/accredible-alternative">The #1 Accredible Alternative: Stop Paying for Your First 1,000 Recipients</a></p></li></ul><div><hr></div><h2>2. No-Code SaaS Secure Solution Architecture</h2><p>All components here are universal.</p><h3>Separated Environments</h3><p>I separated my DEV, TEST, and PROD environments using the advice from the previous post: <a href="https://www.productcompass.pm/p/lovable-branching">How to Build and Scale Full-Stack Apps in Lovable Without Breaking Production</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kwGl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kwGl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png" width="1200" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Lovable Branching, DEV, TEST, PROD environments&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Branching, DEV, TEST, PROD environments" title="Lovable Branching, DEV, TEST, PROD environments" srcset="https://substackcdn.com/image/fetch/$s_!kwGl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.productcompass.pm/p/lovable-branching">Separating DEV, TEST, and PROD environments in Lovable</a></figcaption></figure></div><h3>Quality Assurance in Lovable</h3><p>I start with things that don&#8217;t scale to verify assumptions. I&#8217;ve defined a manual test scenario checklist before release.</p><p>The next step will be recording test scenarios in the browser with <a href="https://www.selenium.dev/selenium-ide/">Selenium</a>. This &#8220;black-box&#8221; testing will cover all my needs for now.</p><h3>Status Monitoring in Lovable</h3><p>I will use a free <a href="https://uptimerobot.com/">UptimeRobot</a> service on production for monitoring and communication.</p><p>An example for aigents.pm:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0XIe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0XIe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 424w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 848w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 1272w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0XIe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png" width="834" height="326" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:326,&quot;width&quot;:834,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24796,&quot;alt&quot;:&quot;UptimeRobot aigents.pm&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/170663543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="UptimeRobot aigents.pm" title="UptimeRobot aigents.pm" srcset="https://substackcdn.com/image/fetch/$s_!0XIe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 424w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 848w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 1272w, https://substackcdn.com/image/fetch/$s_!0XIe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952576b6-fbae-4194-b541-ab98eec7e9cf_834x326.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://uptimerobot.com/">UptimeRobot</a>,</figcaption></figure></div><h3>Extended Product Analytics - Heatmaps And Session Recordings in Lovable</h3><p>I&#8217;ll start with free <a href="https://clarity.microsoft.com/">Microsoft Clarity</a> for heatmaps/session recordings, while masking sensitive data. This helps me understand behavior patterns and what users might struggle with. I&#8217;ll follow up with interviews.</p><p>An example for aigents.pm:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!In0f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!In0f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 424w, https://substackcdn.com/image/fetch/$s_!In0f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 848w, https://substackcdn.com/image/fetch/$s_!In0f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 1272w, https://substackcdn.com/image/fetch/$s_!In0f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!In0f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png" width="1456" height="887" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:887,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:785639,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/170663543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!In0f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 424w, https://substackcdn.com/image/fetch/$s_!In0f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 848w, https://substackcdn.com/image/fetch/$s_!In0f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 1272w, https://substackcdn.com/image/fetch/$s_!In0f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1313dbf-339a-40c0-b729-01115eadf4da_2470x1505.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://clarity.microsoft.com/">Microsoft Clarity</a></figcaption></figure></div><h3>Multi-Tenant Setup in Lovable</h3><p>I used <a href="https://clerk.com/">Clerk</a> that provides authentication (e.g., Google, email), organizations, users, roles, and subscriptions. Clerk also supports MFA, invitation emails, and feature toggles.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DeCi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DeCi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 424w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 848w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 1272w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DeCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png" width="902" height="477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:477,&quot;width&quot;:902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63963,&quot;alt&quot;:&quot;Clerk&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/170663543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadb8598-ad4e-4bfc-8ddb-fd40db1e6601_902x553.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Clerk" title="Clerk" srcset="https://substackcdn.com/image/fetch/$s_!DeCi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 424w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 848w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 1272w, https://substackcdn.com/image/fetch/$s_!DeCi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd68b03f-be6b-4085-8b45-1956fea0914d_902x477.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: <a href="https://clerk.com/">Clerk</a></figcaption></figure></div><p>With Lovable, all I needed was to add predefined Clerk components:</p><ul><li><p><a href="https://clerk.com/docs/nextjs/components/organization/organization-switcher">&lt;OrganizationSwitcher /&gt;</a> - switch between an organization / personal profile</p></li><li><p><a href="https://clerk.com/docs/nextjs/components/user/user-button">&lt;UserButton /&gt;</a> - manage account, sign out</p></li><li><p><a href="https://clerk.com/docs/nextjs/components/organization/organization-profile">&lt;OrganizationProfile /&gt;</a> - manage organization, members, billing, and invoices</p></li></ul><p>Lovable wired them up correctly on the first try.</p><h3>Secure Architecture &amp; Advanced Permissions in Lovable</h3><p>I didn&#8217;t code. I asked Lovable to use Clerk and it iterated from there.</p><p>This architecture is backend-first using Clerk for authentication and Supabase Edge Functions for authorization.</p><p>Key assumptions:</p><ul><li><p>Authentication: Clerk manages login/logout and session lifecycle.</p></li><li><p>Authorization: Roles from the Clerk v2 JWT (`admin`, `user`) are enforced server-side in Edge Functions. </p></li><li><p>Database Security: RLS enabled; only Edge Functions (service role) access the DB.</p></li><li><p>API Security: Tokens validated, scoped by organization, actions gated by user role.</p></li><li><p>Critical: We use the <a href="https://clerk.com/docs/references/backend/overview">Clerk Backend API</a> to avoid malicious actors forging tokens.</p></li></ul><p>Why this approach?</p><p>I could have integrated <a href="https://clerk.com/docs/integrations/databases/supabase">Clerk with Supabase</a> to use standard Supabase RLS (row-level security) and let the frontend access Supabase directly. But for production products, you need robust, fine-grained backend control so that, for example:</p><ul><li><p>Student emails aren&#8217;t exposed in public views.</p></li><li><p>Organization members (not admins) can edit only selected certificate fields.</p></li></ul><p>Benefits:</p><ul><li><p>No direct DB access</p></li><li><p>Centralized authorization</p></li><li><p>Auditable logs (all operations logged in Edge Function logs)</p></li><li><p>Full control over the business logic and permissions (row- and column-level)</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/p/lovable-accredia-digital-certificates?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/p/lovable-accredia-digital-certificates?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2>3. Three Lovable Prompts You Can Reuse to Start Building</h2><p>In this chapter, I provide three <strong>exact prompts</strong> you can easily use to get the same results without effort. </p><p>On top of that, we will be discussing launching apps in detail during office hours after my return. And premium subscribers also get my full support on <a href="https://www.productcompass.pm/p/your-premium-pm-resources">Slack</a>.</p><p>How technical should you be?</p><p>No coding is required or necessary. At the same time, it&#8217;s fair to say you need to:</p><ul><li><p>Understand the architecture</p></li><li><p>Know what JSON, CSS, or HTML are</p></li><li><p>Feel comfortable reviewing simple SQL queries or 2&#8211;3 lines of code snippets</p></li><li><p>Know how to inspect a website in the Google Chrome console (aka DevTools)</p></li></ul><p>I don&#8217;t really know React or TypeScript (never used them), and I don&#8217;t code when working on my Lovable projects.</p><h3>Step 1: Document architecture in readme.md</h3><p>For a new project, ask Lovable to document the architecture in readme.md. Otherwise, it will keep making the same mistakes over and over again:</p>
      <p>
          <a href="https://www.productcompass.pm/p/lovable-accredia-digital-certificates">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Build and Scale Full-Stack Apps in Lovable Without Breaking Production]]></title><description><![CDATA[Branching: separate dev, test & prod - a complete no-code guide with proven workflows for building real products (not prototypes) with Lovable.]]></description><link>https://www.productcompass.pm/p/lovable-branching</link><guid isPermaLink="false">https://www.productcompass.pm/p/lovable-branching</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Sun, 06 Jul 2025 09:39:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a7795c9c-a9ee-4c93-8ce5-ab20b93a14cd_1350x986.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, welcome to the <strong>free edition</strong> of The Product Compass newsletter.</p><p>Every week, I share actionable tips, resources, and insights for PMs.</p><p>Here&#8217;s what you might have missed recently:</p><ol><li><p><a href="https://www.productcompass.pm/p/multi-agent-research-system">I Copied the Multi-Agent Research System by Anthropic. No Coding!</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-product-management-learning-roadmap">The Ultimate AI PM Learning Roadmap</a></p></li><li><p><a href="https://www.productcompass.pm/p/introduction-to-ai-product-management">Introduction to AI Product Management</a></p></li></ol><p>Consider subscribing and upgrading your account, if you haven&#8217;t already, for the full experience:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>For months, I&#8217;ve been repeating that <strong>Lovable is the best solution</strong> for building <strong>real full-stack apps</strong>. No coding.</p><p>In <a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">How to Quickly Build SaaS Products With AI</a> we discussed the best practices of working with Lovable. In <a href="https://www.productcompass.pm/p/full-stack-app-with-lovable">A Complete Course: How to Build a Full-Stack App with Lovable</a>, I shared a 2-hour, step-by-step walkthrough.</p><p>But I haven&#8217;t addressed one critical question:</p><blockquote><p><strong>How do you keep building your app while real users are using it in production?</strong></p></blockquote><p>Any code or database change can break your app. That&#8217;s why the first step in Lovable must be branching and separating environments. </p><p>In traditional products, a common setup is:</p><ul><li><p>(Local) - local engineer&#8217;s environment</p></li><li><p>DEV - environment shared by engineers</p></li><li><p>TEST - environment meant for testing</p></li><li><p>STAGE - staging environment with configuration and data mimicking production</p></li><li><p>PROD - production environment used by real users</p></li></ul><p>When vibe coding, you might not need that complexity. A better approach might be:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kwGl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kwGl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png" width="1200" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91220,&quot;alt&quot;:&quot;Lovable Branching, DEV, TEST, PROD environments&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Branching, DEV, TEST, PROD environments" title="Lovable Branching, DEV, TEST, PROD environments" srcset="https://substackcdn.com/image/fetch/$s_!kwGl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kwGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a0ec091-99bb-4ec3-8c2e-44be01690bc5_1200x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But I recommend starting with the simplest possible setup to make sure your ongoing work doesn&#8217;t affect production:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-wwV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-wwV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-wwV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png" width="1200" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74477,&quot;alt&quot;:&quot;Separating DEV and PROD environments Lovable Branching&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Separating DEV and PROD environments Lovable Branching" title="Separating DEV and PROD environments Lovable Branching" srcset="https://substackcdn.com/image/fetch/$s_!-wwV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!-wwV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87265261-5675-4a05-b11b-24f17fd5e205_1200x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Lovable&#8217;s website didn&#8217;t provide enough information, I faced many errors, and the available options were confusing.</p><p>So, after weeks of research, I&#8217;m sharing my tested approach in detail, with step-by-step instructions. As always, no coding:</p><ol><li><p>Lovable Branching: How to Separate DEV and PROD Environments</p></li><li><p>How to Move Changes Between The Environments</p></li><li><p>How to Add TEST and Other Environments in Lovable</p></li><li><p>How to Roll Back Changes if Something Goes Wrong</p></li></ol><blockquote><p>This post is meant for people who want to <strong>quickly</strong> <strong>build and scale real products without coding and without breaking production</strong>.</p><p>If you're just experimenting with MVPs or prototypes without paying customers, feel free to skip it and check out other <a href="https://www.productcompass.pm/s/ai-product-management">AI Product Management</a> issues.</p></blockquote><p><em>P.S. And in one of the next posts I&#8217;ll demonstrate plugging automatic tests.</em></p><div><hr></div><h2>1. Lovable Branching: How to Separate DEV and PROD Environments</h2><p>As part of my no-code SaaS PoC, I&#8217;m developing a credentials management app using Lovable. It will replace Accredible (from $996/year). </p><p>In 12 hours, I implemented:</p><ul><li><p>Multi-tenant B2B SaaS</p></li><li><p>Admin and member roles for each organization</p></li><li><p>Google &amp; email authentication</p></li><li><p>Drag &amp; drop certificate editor</p></li><li><p>Downloading certificates as PDFs and images</p></li><li><p>Payments</p></li></ul><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;28825878-520b-4141-b63e-1dd129ff5d9e&quot;,&quot;duration&quot;:null}"></div><p>I wanted to share it with coaches to get their feedback. But I planned a few significant changes that might break the app.</p><p>I knew I needed to separate and manage:</p><ul><li><p>Source code</p></li><li><p>Supabase database</p></li><li><p>Web app hosting</p></li></ul><p>Here&#8217;s how I separated my PROD and DEV environments:</p><h3>Step 1: Create a new &#8216;dev&#8217; GitHub branch in Lovable</h3><p>Lovable supports 2-way sync with GitHub, which can store the code and its modification history.</p><p>To isolate the environments, we need to create a copy of the default &#8220;main&#8221; (PROD) branch in a way that will allow us to migrate our changes between the environments, for example DEV &gt; PROD:</p><ol><li><p>Open your project in Lovable and click the GitHub icon. Enable GitHub integration if you haven&#8217;t already.</p></li><li><p>Next, click the &#8220;main&#8221; branch and create a new &#8220;dev&#8221; branch:  </p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vL4N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vL4N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 424w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 848w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 1272w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vL4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png" width="1230" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105755,&quot;alt&quot;:&quot;Lovable Branching GitHub&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Branching GitHub" title="Lovable Branching GitHub" srcset="https://substackcdn.com/image/fetch/$s_!vL4N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 424w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 848w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 1272w, https://substackcdn.com/image/fetch/$s_!vL4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F193f0a90-47f1-4c4a-9e8d-e85f00569817_1230x763.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: When you edit your app in Lovable, code changes will be saved in a &#8216;dev&#8217; GitHub branch without affecting the &#8216;main&#8217; production branch.</p><h3>Step 2: Create a new Supabase database</h3><p>We also need a new Supabase instance. To create it:</p><ol><li><p>Log in to your Supabase dashboard. You can find the link in the right upper corner of Lovable. </p></li><li><p>Next, create a new database for DEV environment. I called it &#8220;dev-certificates:&#8221;</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nMb8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nMb8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 424w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 848w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 1272w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nMb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png" width="1230" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:1230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118533,&quot;alt&quot;:&quot;New Supabase Lovable Branching&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef16022-f36a-47d6-9fb5-148cd71fdb78_1230x763.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="New Supabase Lovable Branching" title="New Supabase Lovable Branching" srcset="https://substackcdn.com/image/fetch/$s_!nMb8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 424w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 848w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 1272w, https://substackcdn.com/image/fetch/$s_!nMb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1896600-53b3-453d-97b2-fbe2513f20e8_1230x753.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>(I didn&#8217;t use Supabase branching because deployments on a DEV environment are managed by Lovable. I wanted to fully isolate it from the other environments.)</em></p><p><strong>The result</strong>: An empty database for the DEV environment. </p><h3>Step 3: Switch Lovable to the new Supabase</h3><p>Wait a few minutes. Once the new database is created:</p><ol><li><p>Open your project in Lovable and click the Supabase icon</p></li><li><p>Switch the database (in my case, &#8220;dev-certificates&#8221;)</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H79F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H79F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 424w, https://substackcdn.com/image/fetch/$s_!H79F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 848w, https://substackcdn.com/image/fetch/$s_!H79F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 1272w, https://substackcdn.com/image/fetch/$s_!H79F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H79F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png" width="1230" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0512341-07a3-4129-a5ea-3098d9143235_1230x763.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102322,&quot;alt&quot;:&quot;Switch Lovable to the new Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Switch Lovable to the new Supabase" title="Switch Lovable to the new Supabase" srcset="https://substackcdn.com/image/fetch/$s_!H79F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 424w, https://substackcdn.com/image/fetch/$s_!H79F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 848w, https://substackcdn.com/image/fetch/$s_!H79F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 1272w, https://substackcdn.com/image/fetch/$s_!H79F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0512341-07a3-4129-a5ea-3098d9143235_1230x763.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: When you change data structure or backend functions in Lovable (tables, edge functions, RLS policies), it will try to deploy those changes to the DEV Supabase, without affecting the PROD.</p><h3>Step 4: Ask Lovable to run SQL migrations</h3><p>The database we created in point 2 is empty and has no objects, such as tables. </p><p>Ask Lovable to execute the SQL migration scripts in order to get the same database structure. I suggest the following prompt:</p><blockquote><p><code>Execute existing Supabase migrations without creating new migration files by: </code></p><p><code>- Taking the SQL content from your migration files </code></p><p><code>- Running it through the lov-sql block for me to review and approve</code></p><p><code>If migrations don&#8217;t exist, create a new SQL migration file first.</code></p></blockquote><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/119be7c5-3e94-4ca2-be7d-ef65ffeceea8_1536x791.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b80f3e07-a898-4818-bc4f-2fd7e332ba51_1536x791.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf37bac-990f-485b-9735-238c1f68bb8a_1536x791.png&quot;}],&quot;caption&quot;:&quot;Running SQL migrations&quot;,&quot;alt&quot;:&quot;Running SQL migrations&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b14ec429-8ad1-4cd2-bec5-484ecdd5ec68_1456x474.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p><em>(We could also execute those migrations manually or through Supabase CLI. I wanted to maximally simplify the process.)</em></p><p><strong>The result</strong>: Your DEV environment has the same SQL tables, SQL functions, storage, and RLS policies as PROD. Future updates will be managed by Lovable.</p><h3>Step 5: Ask Lovable to redeploy edge functions</h3><p>Edge functions contain your business logic. They are deployed differently and were not included in SQL migrations.</p><p>Ask Lovable in the <code>Chat Mode to:</code></p><blockquote><p><code>Can you re-deploy all existing edge functions?</code></p></blockquote><p>Next, click &#8220;Implement the plan&#8221; if Lovable hasn&#8217;t deployed them automatically.</p><p>I didn&#8217;t need it, still, I repeated the process to generate screenshots:</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d2e2095-5f5f-4189-8f9b-31b7262b27bd_1536x791.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/badc0702-748a-420d-9d01-0996922b6dbe_1536x791.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/776227f0-9325-472d-96f3-ff5ec0bc70ef_1536x791.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9091ada9-5b0d-4c64-abec-a8f6e9198280_1536x791.png&quot;}],&quot;caption&quot;:&quot;Redeploying Supabase edge functions&quot;,&quot;alt&quot;:&quot;Redeploying Supabase edge functions&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/855a3c45-2dcd-489b-967b-5eae46db7adb_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p><em>(We could also execute those migrations manually or through Supabase CLI. I wanted to maximally simplify the process.)</em></p><p><strong>The result</strong>: Your DEV environment has the same edge functions as PROD. Future updates will be managed by Lovable.</p><h3>Step 6: (Optional) Add Supabase secrets</h3><p>If you&#8217;re using integrations like OpenAI or Clerk, their API keys are likely stored as Supabase secrets and have not been added to a new Supabase. </p><p>The simplest approach is to copy them manually:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qv8-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qv8-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qv8-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105060,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qv8-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!Qv8-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba23d01-87a2-4e8e-b79e-6d7c469027ec_1536x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>(Note that some API keys might be different depending on the environment. For example, you might want to use a different Clerk instance for DEV and PROD.)</em></p><p><strong>The result</strong>: Your DEV environment has the right Supabase secrets. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/p/lovable-branching?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/p/lovable-branching?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h3>Step 7: Fix hardcoded IDs</h3><p>Even though we theoretically connected Lovable to the new Supabase project, in some cases, Lovable <strong>hardcodes the old project ID</strong>, e.g. in the edge functions.</p><p>In that case, your app will still display data from PROD :) </p><p>You can get your project ID from the Supabase dashboard:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TKXk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TKXk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TKXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118304,&quot;alt&quot;:&quot;Fix hardcoded project IDs&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Fix hardcoded project IDs" title="Fix hardcoded project IDs" srcset="https://substackcdn.com/image/fetch/$s_!TKXk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!TKXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b04892-2de2-445b-949f-ea00dd1601f0_1536x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Next, ask Lovable (use your project IDs and the Chat Mode):</p><blockquote><p><code>I get the impression that somewhere in the code we still have the old Supabase connected or we might be using the old endpoints. Make sure we're connected to project ID etblqdmkutnigpoeeiha (the current ID) and we do not use awosmozntgjdxxfumewh (the old ID).</code></p></blockquote><p>It turned out the old project ID was hardcoded in multiple places, so rather than accepting the plan, I asked Lovable:</p><blockquote><p><code>Can't you move it to one place?</code></p></blockquote><p>And only then clicked &#8220;Implement the Plan:&#8221;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;9a6c7ce1-e28e-44d2-ae93-4a822f517c77&quot;,&quot;duration&quot;:null}"></div><p>The DEV environment stopped displaying data from PROD. I was able to create a new course without seeing the previous courses:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vT5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vT5k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vT5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132573,&quot;alt&quot;:&quot;DEV environment is fully connected to a new Supabase project&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DEV environment is fully connected to a new Supabase project" title="DEV environment is fully connected to a new Supabase project" srcset="https://substackcdn.com/image/fetch/$s_!vT5k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!vT5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87c67588-e034-46c0-a053-7fcc8e1f00d3_1536x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: Your DEV environment is fully connected to a new Supabase project.</p><h3>Step 8: How I fixed hardcoded project IDs in the main (PROD) branch</h3><p>What about the &#8216;main&#8217; branch? After all, project IDs were hardcoded there, too.</p><p>I didn&#8217;t have to fix it, as the hardcoded values were correct. But I coudln&#8217;t sleep well at night if I didn&#8217;t fix it.</p><p>I used standard GitHub features:</p><ol><li><p>Create a pull request from &#8220;dev&#8221; to &#8220;main&#8221;</p></li><li><p>Merge changes from &#8220;dev&#8221; to &#8220;main&#8221; while fixing project ID</p></li></ol><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;3c200077-7d6e-4ffc-b15d-1c88256f627b&quot;,&quot;duration&quot;:null}"></div><p>I had to change my custom file containing project ID (from Step 7): </p><blockquote><p><code>src/lib/constants.ts</code></p></blockquote><p>When using standard Supabase policies, you might have to change this Lovable file containing project ID and Supabase publishable key. Just in case, verify its content:</p><blockquote><p><code>src/integrations/supabase/client.ts</code></p></blockquote><h3>Step 9: Enable automatic deployments for PROD Supabase</h3><p>Whenever we use GitHub to move a new feature from &#8216;dev&#8217; to &#8216;main&#8217; (DEV &gt; PROD), we want those changes to be automatically deployed to PROD Supabase.</p><p>Go to your Supabase dashboard:</p><ol><li><p>Select the PROD database \ Integrations</p></li><li><p>Connect Supabase to your GitHub repository</p></li><li><p>Leave &#8220;.&#8221; as Supabase directory (Lovable&#8217;s default)</p></li><li><p>Enable automatic deployments to PROD from the &#8220;main&#8221; branch</p></li><li><p>Disable automatic branching</p></li><li><p>Save changes</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iWiz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iWiz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iWiz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163734,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iWiz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!iWiz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df3aed6-14fb-496d-a2ac-25d1cef3eca7_1536x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: When you merge changes to the &#8220;main&#8221; GitHub branch, Supabase will automatically run SQL migration scripts and redeploy edge functions.</p><p>You can later review the logs of those operations here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7rs5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7rs5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 424w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 848w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 1272w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7rs5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png" width="1320" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:1320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88523,&quot;alt&quot;:&quot;Supabase migration logs&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Supabase migration logs" title="Supabase migration logs" srcset="https://substackcdn.com/image/fetch/$s_!7rs5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 424w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 848w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 1272w, https://substackcdn.com/image/fetch/$s_!7rs5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb747838e-94d8-41db-b6ff-0c0608c839ba_1320x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 10: Host and automatically deploy UI on PROD</h3><p>Finally, we need to host UI for PROD. For that, I used a free Netlify account. </p><p>All you need to do is to create a new Netlify project and connect it to your GitHub &#8220;main&#8221; branch:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a8d789fd-6a22-4ea4-aff0-8c14ed571f8e&quot;,&quot;duration&quot;:null}"></div><p>That way, I get two different apps:</p><ul><li><p>DEV hosted by Lovable (one student certificate visible in the recording above)</p></li><li><p>PROD hosted by Netlify (two student certificates visible in the recording above)</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aplk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aplk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!aplk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!aplk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!aplk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aplk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png" width="1200" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74477,&quot;alt&quot;:&quot;DEV and PROD environments Lovable DEV Branch&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DEV and PROD environments Lovable DEV Branch" title="DEV and PROD environments Lovable DEV Branch" srcset="https://substackcdn.com/image/fetch/$s_!aplk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!aplk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!aplk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!aplk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd925c136-564f-4a87-b2a7-92b7947be02f_1200x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: When you merge your changes to the &#8220;main&#8221; GitHub branch, Netlify will automatically rebuild the front end and host a new UI. You can also easily connect a custom domain in Netlify configuration.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/p/lovable-branching?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/p/lovable-branching?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2>2. How to Move Changes Between The Environments</h2><h3>Important prerequisites</h3><p>Before moving forward, you <strong>must instruct Lovable</strong> that from now on, each migration script should follow the following format <strong>required by Supabase</strong>:</p><blockquote><p>## SQL migration file names</p><p><code>All new migration scripts should follow the following format: &lt;timestamp&gt;_name.sql</code></p><p><code>Example: 20250706150015_add_earning_criteria.sql</code></p></blockquote><p>You can add this information to <strong>project knowledge in Lovable</strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yu11!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yu11!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 424w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 848w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 1272w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yu11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png" width="1072" height="383" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:383,&quot;width&quot;:1072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74667,&quot;alt&quot;:&quot;Migration files format required by Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Migration files format required by Supabase" title="Migration files format required by Supabase" srcset="https://substackcdn.com/image/fetch/$s_!Yu11!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 424w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 848w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 1272w, https://substackcdn.com/image/fetch/$s_!Yu11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0657899a-0974-4d3e-ab0d-2af1874c8bea_1072x383.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Migrations troubleshooting</h3><p>If, like me, you did a mistake of renaming old migrations, Supabase won&#8217;t migrate anything. In that and similar cases:</p><ul><li><p>Execute <strong>delete from supabase_migrations.schema_migrations</strong> in Supabase to clean a migration history:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vaj5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vaj5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 424w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 848w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 1272w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vaj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png" width="746" height="277" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:277,&quot;width&quot;:746,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30187,&quot;alt&quot;:&quot;delete from supabase_migrations.schema_migrations in Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="delete from supabase_migrations.schema_migrations in Supabase" title="delete from supabase_migrations.schema_migrations in Supabase" srcset="https://substackcdn.com/image/fetch/$s_!vaj5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 424w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 848w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 1272w, https://substackcdn.com/image/fetch/$s_!vaj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54c857b-1462-4dce-9b6f-a2c63e8ad83f_746x277.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Move</strong> <strong>old migration files to the archive</strong>, e.g., to a separate folder using <a href="https://desktop.github.com/download/">GitHub Desktop</a> or remove them from the main branch (in that second scenario, make sure you know what you&#8217;re doing). That way, those files will be skipped (Lovable doesn&#8217;t create them in a way that you can execute them multiple times):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hvcp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvcp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 424w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 848w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 1272w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvcp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png" width="842" height="483" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:483,&quot;width&quot;:842,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31272,&quot;alt&quot;:&quot;Move old migration files to the archive, e.g., to a separate folder using GitHub Desktop&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Move old migration files to the archive, e.g., to a separate folder using GitHub Desktop" title="Move old migration files to the archive, e.g., to a separate folder using GitHub Desktop" srcset="https://substackcdn.com/image/fetch/$s_!hvcp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 424w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 848w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 1272w, https://substackcdn.com/image/fetch/$s_!hvcp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ca5c14-cfe9-4cf5-85e9-25975f3851a5_842x483.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h3>How to move changes between the environments</h3><p>Below, I recorded a video in which:</p><ol><li><p>I asked Lovable to add a new field &#8220;Earning Criteria&#8221; to the course form. This changes the code and SQL database (a new column &#8220;earning_criteria&#8221;).</p></li><li><p>After testing, I created a pull request from dev to main (PROD) in GitHub and merged it.</p></li><li><p>Supabase detected a new migration file and updated the PROD database.</p></li><li><p>Netlify detected a GitHub change and deployed a new front end.</p></li></ol><p><em>(No voice, I&#8217;m still recovering after being sick this week. But I added descriptions.)</em></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ada51055-39a3-4eac-9a29-6ab58f0dd408&quot;,&quot;duration&quot;:null}"></div><div><hr></div><h2>3. How to Add TEST and Other Environments</h2><p>This process is way easier. We do not have to deal with Lovable anymore.</p><h3>Step A: Create a new GitHub branch from &#8216;main&#8217; e.g., &#8216;test&#8217;</h3><p>You can use GitHub UI:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HX56!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HX56!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 424w, https://substackcdn.com/image/fetch/$s_!HX56!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 848w, https://substackcdn.com/image/fetch/$s_!HX56!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 1272w, https://substackcdn.com/image/fetch/$s_!HX56!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HX56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png" width="1456" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116293,&quot;alt&quot;:&quot;Lovable: Create a new GitHub branch from &#8216;main&#8217; e.g., &#8216;test&#8217;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable: Create a new GitHub branch from &#8216;main&#8217; e.g., &#8216;test&#8217;" title="Lovable: Create a new GitHub branch from &#8216;main&#8217; e.g., &#8216;test&#8217;" srcset="https://substackcdn.com/image/fetch/$s_!HX56!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 424w, https://substackcdn.com/image/fetch/$s_!HX56!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 848w, https://substackcdn.com/image/fetch/$s_!HX56!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 1272w, https://substackcdn.com/image/fetch/$s_!HX56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59ae81a6-2032-492d-bfca-5a95f64bb18f_1536x825.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: You have a new GitHub branch for the new environment.</p><h3>Step B: Go to Supabase and create a new branch, e.g., &#8216;test&#8217;</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zNkT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zNkT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zNkT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96603,&quot;alt&quot;:&quot;Lovable: Go to Supabase and create a new branch, e.g., &#8216;test&#8217;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable: Go to Supabase and create a new branch, e.g., &#8216;test&#8217;" title="Lovable: Go to Supabase and create a new branch, e.g., &#8216;test&#8217;" srcset="https://substackcdn.com/image/fetch/$s_!zNkT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 424w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 848w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 1272w, https://substackcdn.com/image/fetch/$s_!zNkT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6140e81-81d4-4267-98fe-d7df9056054b_1536x791.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sync it with the GitHub branch you&#8217;ve created:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G9Qz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G9Qz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 424w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 848w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 1272w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G9Qz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png" width="1456" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207895,&quot;alt&quot;:&quot;Sync it with the GitHub branch you&#8217;ve created&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sync it with the GitHub branch you&#8217;ve created" title="Sync it with the GitHub branch you&#8217;ve created" srcset="https://substackcdn.com/image/fetch/$s_!G9Qz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 424w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 848w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 1272w, https://substackcdn.com/image/fetch/$s_!G9Qz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886054e6-3f10-45eb-a4a9-56b679d05900_1536x825.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: You have a new Supabase branch for the new environment. All database changes will be deployed automatically.</p><h3>Step C: Repeat steps from the previous point</h3><ul><li><p>Step 6: Add Supabase secrets (if applicable)</p></li><li><p>Manually edit project ID and Supabase publishable key as explained in Step 8</p></li><li><p>Step 10: Host and automatically deploy UI on PROD (Netlify)</p></li></ul><p>After completing those steps, you have three isolated environments: DEV, TEST, PROD.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjxW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjxW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjxW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png" width="1200" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91220,&quot;alt&quot;:&quot;Lovable Branching Supabase, GitHub&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Branching Supabase, GitHub" title="Lovable Branching Supabase, GitHub" srcset="https://substackcdn.com/image/fetch/$s_!zjxW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 424w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 848w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 1272w, https://substackcdn.com/image/fetch/$s_!zjxW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228b72d3-085c-46dd-8f37-d3283167228e_1200x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The result</strong>: When you merge your changes to the &#8220;main&#8221; or &#8220;test&#8221; GitHub branch (DEV &gt; TEST), the Supabase is automatically updated. Netlify will automatically rebuild the front end and host a new UI.</p><div><hr></div><h2>4. How to Roll Back Changes if Something Goes Wrong</h2><p>Despite testing, sometimes things break. In that case:</p><h3>Revert GitHub</h3><p>You can view repository at the time of a specific commit and download files manually:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YscF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YscF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 424w, https://substackcdn.com/image/fetch/$s_!YscF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 848w, https://substackcdn.com/image/fetch/$s_!YscF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 1272w, https://substackcdn.com/image/fetch/$s_!YscF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YscF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png" width="1456" height="558" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbd4a233-b815-4e90-b564-31829712d264_1476x566.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93640,&quot;alt&quot;:&quot;Revert GitHub manually Lovable&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Revert GitHub manually Lovable" title="Revert GitHub manually Lovable" srcset="https://substackcdn.com/image/fetch/$s_!YscF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 424w, https://substackcdn.com/image/fetch/$s_!YscF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 848w, https://substackcdn.com/image/fetch/$s_!YscF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 1272w, https://substackcdn.com/image/fetch/$s_!YscF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4a233-b815-4e90-b564-31829712d264_1476x566.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Another option is reverting the most recent pull request:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;8895a7a4-168f-4200-a1a9-7ab9b89b8e3c&quot;,&quot;duration&quot;:null}"></div><p>Restoring GitHub to any point in time is outside the scope of this post and might require running git console commands, e.g., to create a temporary branch based on a working commit ID.</p><h3>Restore Supabase</h3><p>If your database was modified, you might need to restore it from a backup.</p><p>Ideally, you can restore your Supabase to a selected point in time. But it costs $100/month with a 7-day backup period:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zbVo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zbVo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 424w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 848w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 1272w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zbVo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png" width="1206" height="605" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:605,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89530,&quot;alt&quot;:&quot;Restore Supabase in Lovable&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Restore Supabase in Lovable" title="Restore Supabase in Lovable" srcset="https://substackcdn.com/image/fetch/$s_!zbVo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 424w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 848w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 1272w, https://substackcdn.com/image/fetch/$s_!zbVo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4a61d3-30d1-4668-be1e-0dd9c780c1fc_1206x605.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At minimum enable daily backups and plan larger deployments just after a new backup is created. This feature is available in the cheapest $10/month plan:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!brrN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!brrN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 424w, https://substackcdn.com/image/fetch/$s_!brrN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 848w, https://substackcdn.com/image/fetch/$s_!brrN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 1272w, https://substackcdn.com/image/fetch/$s_!brrN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!brrN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128375,&quot;alt&quot;:&quot;enable daily backups in Lovable Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167627514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="enable daily backups in Lovable Supabase" title="enable daily backups in Lovable Supabase" srcset="https://substackcdn.com/image/fetch/$s_!brrN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 424w, https://substackcdn.com/image/fetch/$s_!brrN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 848w, https://substackcdn.com/image/fetch/$s_!brrN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 1272w, https://substackcdn.com/image/fetch/$s_!brrN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59214a0-e98d-4016-8375-ec0df2f98d7e_1536x739.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Thanks for Reading The Product Compass Newsletter</h2><p>I wanted to share this for those who, like me, use Lovable to build real full-stack apps.</p><p>On Tuesday, I&#8217;ll demonstrate a practical example of creating DEV and TEST environments for a simple Lovable project during our <a href="https://www.productcompass.pm/p/your-premium-pm-resources">office hours</a>. The recording will be, as always, available <a href="https://www.productcompass.pm/p/office-hours-recordings">here</a>.</p><p>In the coming weeks, I&#8217;ll demonstrate (no coding):</p><ul><li><p>Plug in unit testing to your CI/CD pipeline</p></li><li><p>Build a multi-tenant B2B SaaS with payments (my PoC resumed)</p></li><li><p>GTM to get real users (my PoC continued)</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?group=true&amp;coupon=034934f2&quot;,&quot;text&quot;:&quot;Get 20% off a group subscription&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?group=true&amp;coupon=034934f2"><span>Get 20% off a group subscription</span></a></p><p>Have an awesome rest of the week and a fantastic week ahead!</p><p>Pawe&#322;</p>]]></content:encoded></item><item><title><![CDATA[Base44: A Brutally Simple Alternative to Lovable]]></title><description><![CDATA[Full-stack apps in minutes with zero technical skills. All-in-one: Google authentication, database and permissions without leaving the app.]]></description><link>https://www.productcompass.pm/p/base44-vs-lovable</link><guid isPermaLink="false">https://www.productcompass.pm/p/base44-vs-lovable</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Sat, 28 Jun 2025 20:29:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a268a9e1-6f6a-49f6-977f-8167fe8680ac_1526x971.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, welcome to the <s>free</s> <strong>archived edition</strong> of The Product Compass newsletter.</p><p>Every week, I share actionable tips, resources, and insights for PMs.</p><p>Here&#8217;s what you might have recently missed: </p><ol><li><p><a href="https://www.productcompass.pm/p/multi-agent-research-system">I Copied the Multi-Agent Research System by Anthropic. No Coding!</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-agents">What is an AI Agent, How to Build an AI Agent</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-product-management-learning-roadmap">The Ultimate AI PM Learning Roadmap</a></p></li><li><p><a href="https://www.productcompass.pm/p/ai-agent-architectures">AI Agent Architectures: The Ultimate Guide With n8n Examples</a></p></li><li><p><a href="https://www.productcompass.pm/p/introduction-to-ai-product-management">Introduction to AI Product Management</a></p></li></ol><p>Consider subscribing and upgrading your account, if you haven&#8217;t already, for the full experience:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Since <a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">Jan 2025</a>, I&#8217;ve been promoting <strong>Lovable</strong> as <strong>the best no-code solution for building real, full-stack apps</strong>. In that time, the company has grown about 10 times from $6M to $60M ARR, becoming Europe&#8217;s fastest-growing AI startup.</p><p>But I&#8217;ve also emphasized one thing:<br>While working with Lovable doesn&#8217;t require coding, it does require basic technical knowledge.</p><p>As explained in <a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">best practices</a>, a Lovable user should:</p><ul><li><p>Review components Lovable creates,</p></li><li><p>Look at the database structure,</p></li><li><p>Understand Supabase RLS (row-level security) policies,</p></li><li><p>Know how to integrate Lovable with GitHub, Supabase, or Netlify.</p></li></ul><p>Turned out, it was a problem for some readers.<br><br>Recently, someone in our community recommended <strong>Base44</strong>. I was skeptical. But I decided to test it.</p><blockquote><p>Base44 turned out to be <strong>the simplest all-in-one solution</strong> for those who want to build prototypes, small full-stack apps, or even minimal products.</p></blockquote><p>So, in today&#8217;s issue:</p><ol><li><p>Demo: Building a RAG Chatbot With Base44</p></li><li><p>Base44 vs. Lovable: Feature Comparison</p></li><li><p>Conclusion</p></li></ol><div><hr></div><p><em>This post was not sponsored. The only sponsors that appeared here on Substack in 2025:</em></p><ul><li><p><em><a href="https://bit.ly/aipmcohort">AI PM Certification</a> by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Miqdad Jaffer&quot;,&quot;id&quot;:277704439,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97098e5a-916a-4b22-84ce-0a1c5d2168bc_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;8aebef64-6d6a-4f78-85b8-ef8b3169e4dc&quot;}" data-component-name="MentionToDOM"></span> (Product Lead at OpenAI). I recently joined Miqdaq as AI Labs Build Leader.</em></p></li><li><p><em><a href="https://bit.ly/aievals35">AI Evals for Engineers and PMs</a> by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Hamel Husain&quot;,&quot;id&quot;:2260358,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Feee58cd7-9a81-4ef6-b0f4-faeed62d5166_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;7097aea3-f2ed-40f5-b1ad-914deff46679&quot;}" data-component-name="MentionToDOM"></span> (ML Engineer, 25 years of experience) and Shreya Shankar.</em></p></li></ul><p><em>Those courses are currently the <a href="https://maven.com/">#1 and #2 ranked on Maven</a>.</em></p><div><hr></div><h2>1. Demo: Building a RAG Chatbot With Base44</h2><p>In <strong>18 minutes</strong>, I built a RAG chatbot and recorded the entire process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0zDa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0zDa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 424w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 848w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 1272w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0zDa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png" width="1348" height="958" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:958,&quot;width&quot;:1348,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:613621,&quot;alt&quot;:&quot;Base44 Demo: RAG Chatbot&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/167039861?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Base44 Demo: RAG Chatbot" title="Base44 Demo: RAG Chatbot" srcset="https://substackcdn.com/image/fetch/$s_!0zDa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 424w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 848w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 1272w, https://substackcdn.com/image/fetch/$s_!0zDa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c930-d1aa-4113-81d6-825cfc60ae56_1348x958.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Base44 demo built in 18 minutes</figcaption></figure></div><p>A full recording with everything I did step-by-step:</p>
      <p>
          <a href="https://www.productcompass.pm/p/base44-vs-lovable">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Beyond Vibe Coding: No-Code B2C SaaS Template With Stripe Payments]]></title><description><![CDATA[Launch and monetize real products. A Lovable template to ship SaaS for your startup, side hustle, or PM portfolio.]]></description><link>https://www.productcompass.pm/p/lovalbe-saas-b2c-template-stripe</link><guid isPermaLink="false">https://www.productcompass.pm/p/lovalbe-saas-b2c-template-stripe</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Sun, 18 May 2025 01:16:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/70498516-3e8b-4be1-9ea5-404d96d8ee64_1520x979.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hey, Pawe&#322; here. Welcome to the <strong>freemium </strong>edition of The Product Compass Newsletter.</em></p><p><em>Every week, I share actionable tips, templates, resources, and insights for PMs.</em></p><p><em>This is the #1 AI PM newsletter for those who want to quickly learn by doing rather than listening or studying theory. No coding.</em></p><p><em>Here&#8217;s what you might have recently missed:</em></p><ul><li><p><em><a href="https://www.productcompass.pm/p/ai-agent-architectures">AI Agent Architectures: The Ultimate Guide With n8n Examples</a></em></p></li><li><p><em><a href="https://www.productcompass.pm/p/the-ultimate-chatgpt-prompts-product-managers">The Ultimate ChatGPT Prompts Library for Product Managers</a></em></p></li><li><p><em><a href="https://www.productcompass.pm/p/introduction-to-ai-product-management">Introduction to AI Product Management</a></em></p></li></ul><p><em>Consider subscribing or upgrading your account for the full experience:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Recently, everyone is talking about vibe coding. </p><p>I never liked the term. Every time I hear it, I think about people demonstrating stunning 3D games and prototypes.</p><blockquote><p>But something is missing: They struggle to <strong>go to market and monetize apps.</strong> </p></blockquote><p>What most people do is:</p><ul><li><p>Launch a free product and delay monetization (no skin-in-the-game)</p></li><li><p>Some add external links (limited to products like a marketplace)</p></li></ul><p>That needs to change.</p><p>I&#8217;m sharing a free Lovable B2C SaaS template integrated with Stripe you can use as a starting point to:</p><ul><li><p>Quickly build and monetize real products without coding</p></li><li><p>Build a portfolio just a few AI PMs have</p></li><li><p>Get practical GTM experience</p></li></ul><p>To demonstrate how the template works, I build a simple app to manage to-dos:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wVvf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wVvf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 424w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 848w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 1272w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wVvf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png" width="1055" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1055,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:287496,&quot;alt&quot;:&quot;Lovable app template integrated with Stripe&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b7e529-a8ad-484f-9df9-6b613d17aae2_1055x736.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable app template integrated with Stripe" title="Lovable app template integrated with Stripe" srcset="https://substackcdn.com/image/fetch/$s_!wVvf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 424w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 848w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 1272w, https://substackcdn.com/image/fetch/$s_!wVvf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb6d77b-1d81-4613-9d96-bdb622d9c5bd_1055x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Demo of a user making <strong>Stripe payments</strong> and <strong>managing a subscription</strong> step-by-step:</p><div id="youtube2-dwsoP6DfU70" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dwsoP6DfU70&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dwsoP6DfU70?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>In the next weeks, I will cover go-to-market, customer support, renewals, and release management. I will also present building an app to manage course certificates and get a few real customers as a PoC. Using the template to build the first app was already a lot for a single post.</em></p><p>In this issue:</p><ol><li><p>How to Use Lovable B2C SaaS Template</p><ol><li><p>Step 1: Clone my template</p></li><li><p>Step 2: Connect Supabase</p></li><li><p>Step 3: Run database migration scripts</p></li><li><p>Step 4: Connect GitHub</p></li><li><p>Step 5: Connect and configure Stripe automatically</p></li><li><p>Video With Steps 1-5</p></li></ol></li><li><p>&#128274; How to Create a Custom B2B SaaS Product</p><ol><li><p>Step 6: Modify content, look, and feel</p></li><li><p>Step 7: Add custom logic: A simple case study (video)</p></li><li><p>Step 8: Connect your own domain and publish</p></li><li><p>Step 9: Enable Google authentication</p></li></ol></li><li><p> &#128274; Going Further</p><ol><li><p>How to plug free session recordings and heatmaps</p></li><li><p>How to connect free app status monitoring</p></li><li><p>How to send more emails</p></li><li><p>Intro: How to modify the product once it&#8217;s on production</p></li></ol></li></ol><p>Let&#8217;s dive in!</p><div><hr></div><p>Before we proceed, I&#8217;d like to recommend the <a href="https://bit.ly/aipmcohort">AI Product Management Certification</a>. It&#8217;s a six-week cohort taught by instructors like Miqdad Jaffer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!trcO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!trcO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!trcO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!trcO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!trcO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!trcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI Product Management Certification&quot;,&quot;title&quot;:&quot;AI Product Management Certification&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="AI Product Management Certification" title="AI Product Management Certification" srcset="https://substackcdn.com/image/fetch/$s_!trcO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!trcO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!trcO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!trcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d43b3d-8771-4a39-9824-7fc4a4b5bb75_1456x819.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I participated in the cohort in Spring 2024. The next session starts on <strong>Sep 15, 2025 </strong>(edited). </p><p>I secured $500 discount for our community if you use this link to sign up:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bit.ly/aipmcohort&quot;,&quot;text&quot;:&quot;Get a $500 discount&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://bit.ly/aipmcohort"><span>Get a $500 discount</span></a></p><div><hr></div><h2>1. How to Use Lovable B2C SaaS Template</h2><h3>Step 1: Clone my template</h3><p>My template is available here: <a href="https://lovable.dev/projects/2da2f483-207a-4d2c-bb63-084cfb02893b">public template project</a>. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://lovable.dev/projects/2da2f483-207a-4d2c-bb63-084cfb02893b&quot;,&quot;text&quot;:&quot;Get Lovable B2C SaaS Template&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://lovable.dev/projects/2da2f483-207a-4d2c-bb63-084cfb02893b"><span>Get Lovable B2C SaaS Template</span></a></p><p>Next, click &#8220;Remix&#8221; in the top right corner. You will have to log in or create a new Lovable account:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x7si!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x7si!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 424w, https://substackcdn.com/image/fetch/$s_!x7si!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 848w, https://substackcdn.com/image/fetch/$s_!x7si!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 1272w, https://substackcdn.com/image/fetch/$s_!x7si!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x7si!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png" width="1093" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1093,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:285148,&quot;alt&quot;:&quot;Lovable B2C SaaS Template&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable B2C SaaS Template" title="Lovable B2C SaaS Template" srcset="https://substackcdn.com/image/fetch/$s_!x7si!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 424w, https://substackcdn.com/image/fetch/$s_!x7si!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 848w, https://substackcdn.com/image/fetch/$s_!x7si!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 1272w, https://substackcdn.com/image/fetch/$s_!x7si!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c42ba8f-d5dc-4d46-83f8-b14f7086dfaf_1093x631.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 2: Connect Supabase</h3><p>After creating a copy, connect it to Supabase by clicking a green button in Lovable. You will have to create a Supabase account if you haven&#8217;t already:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nnm4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nnm4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 424w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 848w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 1272w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nnm4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png" width="830" height="134" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9686d937-f950-4250-88a4-ebb13dbed098_830x134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:134,&quot;width&quot;:830,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15883,&quot;alt&quot;:&quot;Connect Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Connect Supabase" title="Connect Supabase" srcset="https://substackcdn.com/image/fetch/$s_!Nnm4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 424w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 848w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 1272w, https://substackcdn.com/image/fetch/$s_!Nnm4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9686d937-f950-4250-88a4-ebb13dbed098_830x134.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Even though you can use a <strong>free Supabase version</strong>, it doesn't support backups. For production environments, I highly recommend choosing at least the <strong>Pro</strong> plan (~$25/month, including $10/month compute credits) and a <strong>Micro</strong> instance (~$10/month for the compute).</p><p>Wait for the project status to turn green before going back to Lovable:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fOdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fOdD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 424w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 848w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 1272w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fOdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png" width="1188" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:1188,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98531,&quot;alt&quot;:&quot;Supabase: I highly recommend choosing a Pro plan and a Micro instance&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Supabase: I highly recommend choosing a Pro plan and a Micro instance" title="Supabase: I highly recommend choosing a Pro plan and a Micro instance" srcset="https://substackcdn.com/image/fetch/$s_!fOdD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 424w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 848w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 1272w, https://substackcdn.com/image/fetch/$s_!fOdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6afb22b-3ec9-4cad-b56c-707e19263f5d_1188x549.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Finally, click the Supabase icon again, select your database from the list, and click &#8220;Connect.&#8221;</p><h3>Step 3: Run database migration scripts</h3><p>In Lovable chat window ask Lovable to:</p><blockquote><p><code>Since this project is based on another Lovable template, you need to execute the database migration scripts. You can find them in the supabase/migrations folder.</code></p></blockquote><p>After a successful migration: Log in to <strong>Supabase &gt; Your project &gt; Authentication</strong> and create a new user with e-mail authentication for testing:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KElb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KElb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 424w, https://substackcdn.com/image/fetch/$s_!KElb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 848w, https://substackcdn.com/image/fetch/$s_!KElb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 1272w, https://substackcdn.com/image/fetch/$s_!KElb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KElb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png" width="777" height="518" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:518,&quot;width&quot;:777,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67176,&quot;alt&quot;:&quot;log in to Supabase > Your project > Authentication and create a new user with e-mail authentication&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="log in to Supabase > Your project > Authentication and create a new user with e-mail authentication" title="log in to Supabase > Your project > Authentication and create a new user with e-mail authentication" srcset="https://substackcdn.com/image/fetch/$s_!KElb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 424w, https://substackcdn.com/image/fetch/$s_!KElb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 848w, https://substackcdn.com/image/fetch/$s_!KElb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 1272w, https://substackcdn.com/image/fetch/$s_!KElb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b5d2115-0143-4f49-a0c5-ef5376165dab_777x518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 4: Connect GitHub</h3><p>Connect to GitHub and sync with the code repository by clicking this icon in Lovable. You will have to create a GitHub account, if you don&#8217;t have one:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!upDy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!upDy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 424w, https://substackcdn.com/image/fetch/$s_!upDy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 848w, https://substackcdn.com/image/fetch/$s_!upDy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 1272w, https://substackcdn.com/image/fetch/$s_!upDy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!upDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png" width="843" height="137" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:137,&quot;width&quot;:843,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19082,&quot;alt&quot;:&quot;Lovable Connect GitHub&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd17a014-a0bc-496a-a4d0-34f5057e4059_938x139.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable Connect GitHub" title="Lovable Connect GitHub" srcset="https://substackcdn.com/image/fetch/$s_!upDy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 424w, https://substackcdn.com/image/fetch/$s_!upDy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 848w, https://substackcdn.com/image/fetch/$s_!upDy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 1272w, https://substackcdn.com/image/fetch/$s_!upDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed993903-a422-49d4-bd2b-fbb6a85d77c6_843x137.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can test it, for example, by uploading primary-logo.svg that will automatically override and replace the app logo:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p9vi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p9vi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 424w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 848w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 1272w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p9vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png" width="1115" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1115,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86411,&quot;alt&quot;:&quot;Lovable replace logo&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable replace logo" title="Lovable replace logo" srcset="https://substackcdn.com/image/fetch/$s_!p9vi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 424w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 848w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 1272w, https://substackcdn.com/image/fetch/$s_!p9vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f817990-c2d9-4e4d-8de9-1837f87de021_1115x660.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 5: Connect and configure Stripe</h3><p>Create a free Stripe account. </p><p>Next, go to <a href="https://dashboard.stripe.com/apikeys">https://dashboard.stripe.com/apikeys</a> and generate a new Stripe API key. <strong>Save it somewhere.</strong></p><h4>Step 5.1 Initialize products and prices</h4><p>Next:</p><ul><li><p>Ensure you have npm installed locally. If you don&#8217;t know how, ask ChatGPT.</p></li><li><p>Download the following script: <strong><a href="https://drive.google.com/drive/folders/1eph_dH_kbbHr_ma_e4cy9Szbo02vMqVA?usp=sharing">stripe-setup.js</a> (Google Drive):</strong></p><ul><li><p>It automatically creates products and prices and configures customer portal.</p></li><li><p>You can adjust it with a text editor or edit these products later in Stripe.</p></li></ul></li><li><p>Open the same folder with command line/bash and execute two commands:</p></li></ul><blockquote><p><code>npm install stripe prompt-sync</code></p><p><code>node stripe-setup.js</code></p></blockquote><p>The second command will ask you for the Stripe API Key.</p><h4>Step 5.2 Configure Stripe in GitHub</h4><p>After the script configures Stripe, it will create a &#8220;stripe.ts&#8221; file in the same folder, for example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aFLx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aFLx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 424w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 848w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 1272w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aFLx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png" width="638" height="375.72938144329896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:776,&quot;resizeWidth&quot;:638,&quot;bytes&quot;:32609,&quot;alt&quot;:&quot;Lovable SaaS Template with Stripe - Configure Stripe&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lovable SaaS Template with Stripe - Configure Stripe" title="Lovable SaaS Template with Stripe - Configure Stripe" srcset="https://substackcdn.com/image/fetch/$s_!aFLx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 424w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 848w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 1272w, https://substackcdn.com/image/fetch/$s_!aFLx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde36a46a-957f-4a3d-8dd3-d68dbc3937e0_776x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Which in the app will be visible as:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QHYX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QHYX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 424w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 848w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 1272w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QHYX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png" width="1091" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1091,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49825,&quot;alt&quot;:&quot;Stripe and Lovable&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stripe and Lovable" title="Stripe and Lovable" srcset="https://substackcdn.com/image/fetch/$s_!QHYX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 424w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 848w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 1272w, https://substackcdn.com/image/fetch/$s_!QHYX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85913d16-05f8-4a38-8d0a-e698c636ffde_1091x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Plan selection in Trelly</figcaption></figure></div><p>Next, view GitHub repository, then find and edit the following files with Stripe configuration:</p><ul><li><p>src/config/stripe.ts</p></li><li><p>supabase/functions/shared/stripe-config.ts</p></li></ul><p>Replace their content with the <strong>stripe.ts</strong> generated in this point.</p><p><strong>Important</strong>: </p><ul><li><p>Replace <strong>two files</strong>, not one. I skipped that part in the video.</p></li><li><p>After connecting GitHub, Lovable might get confused. I often get chat history from the original project. Wait <strong>5-10 minutes</strong> and the problem should be resolved automatically.</p></li></ul><h4>Step 5.3 Configure Stripe API Key in Supabase</h4><p>Finally, go back to your Supabase &gt; Edge Functions &gt; Secrets and create a secret &#8220;<strong>STRIPE_SECRET_KEY</strong>&#8221; with the Stripe API Key we created at the beginning of this step (it&#8217;s used by edge functions):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VN91!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VN91!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 424w, https://substackcdn.com/image/fetch/$s_!VN91!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 848w, https://substackcdn.com/image/fetch/$s_!VN91!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 1272w, https://substackcdn.com/image/fetch/$s_!VN91!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VN91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png" width="1160" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:1160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70804,&quot;alt&quot;:&quot;Configure Stripe API Key in Supabase&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.productcompass.pm/i/163784929?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Configure Stripe API Key in Supabase" title="Configure Stripe API Key in Supabase" srcset="https://substackcdn.com/image/fetch/$s_!VN91!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 424w, https://substackcdn.com/image/fetch/$s_!VN91!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 848w, https://substackcdn.com/image/fetch/$s_!VN91!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 1272w, https://substackcdn.com/image/fetch/$s_!VN91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e349d1f-fa0b-4455-88c5-242bb149795a_1160x549.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Video With Steps 1-5</h3><p>From copying a template to receiving first payments:</p><div id="youtube2-xwEvo4R7QI0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xwEvo4R7QI0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xwEvo4R7QI0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2>2. How to Create a Custom B2B SaaS Product Based on The Template</h2><h3>Step 6: Modify content, look, and feel</h3><p>I covered best practices of working with Lovable in my two previous posts:</p><ul><li><p><a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">Best Practices: How to Quickly Build SaaS Products With AI (No Coding)</a></p></li><li><p><a href="https://www.productcompass.pm/p/full-stack-app-with-lovable">A Complete Course: How to Build a Full-Stack App with Lovable (No-Coding)</a></p></li></ul><p>An extensive checklist specific to this template:</p>
      <p>
          <a href="https://www.productcompass.pm/p/lovalbe-saas-b2c-template-stripe">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[A Complete Course: How to Build a Full-Stack App with Lovable (No-Coding)]]></title><description><![CDATA[I documented everything step-by-step: UI, database, authentication, roles, and permissions. A 2:16:54 recording.]]></description><link>https://www.productcompass.pm/p/full-stack-app-with-lovable</link><guid isPermaLink="false">https://www.productcompass.pm/p/full-stack-app-with-lovable</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Wed, 30 Apr 2025 18:28:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f7159562-0209-48d9-b5fd-3acb923bcd80_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, Pawel here. Welcome to a <strong>special</strong> <strong>edition</strong> of The Product Compass Newsletter.</p><p>Many subscribers have been asking me about building full-stack apps without coding. And while we covered <a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">best practices</a>, I never demonstrated the full processes.</p><p>Inspired by the recent post, <a href="https://www.productcompass.pm/p/ai-evals">Mastering AI Evals: A Complete Guide for PMs</a>, I spent 2+ hours documenting everything.</p><p>We start from a blank page and build a web app (LLM Trace Evaluator) with:</p><ul><li><p>Data stored in a database</p></li><li><p>Secure user authentication</p></li><li><p>Roles and permissions enforced by the backend</p></li></ul><p>No cuts. No fast forwards. </p><p>Just me, Lovable, and Supabase.</p><p><strong>The end result:</strong></p><div id="youtube2-39jKLVwC8Oc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;39jKLVwC8Oc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/39jKLVwC8Oc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Below you&#8217;ll find the full video (2:16:54) with chapters:</p><ul><li><p>(00:00) Our objective: Analyzing and evaluating LLM traces </p></li><li><p>(00:57) Plan and initialize the app layout </p></li><li><p>(04:25) Build a record viewer (the main component) </p></li><li><p>(09:09) I'm fixing UI/UX issues </p></li><li><p>(15:58) Connect to Supabase </p></li><li><p>(52:41) I'm fixing quick reports </p></li><li><p>(56:00) Add a filters component </p></li><li><p>(1:06:26) Create a dedicated reports page </p></li><li><p>(1:20:32) Add roles, permissions, and policies </p></li><li><p>(1:36:00) Improve mobile views and the layout + GitHub </p></li><li><p>(2:00:00) Summary (and small fixes)</p></li></ul><p><strong>P.S.</strong> I comment on each step and share best practices, but if anything's unclear, I&#8217;ll answer all your questions during our <a href="https://www.productcompass.pm/p/your-premium-pm-resources">weekly Zoom session on Tuesday</a>.</p><p><strong>P.S.S.</strong> In May 2025, I&#8217;ll record another video on setting up Stripe integration and adding Google authentication, so you can monetize your product &#128640;</p><p>Let&#8217;s dive in: &#128071;</p>
      <p>
          <a href="https://www.productcompass.pm/p/full-stack-app-with-lovable">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Quickly Build SaaS Products With AI (No Coding)]]></title><description><![CDATA[The blueprint for creating SaaS web apps like Credly, Calendly, Bitly, Trello, or Typeform with AI. Minimum but viable products that you can actually use.]]></description><link>https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai</link><guid isPermaLink="false">https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai</guid><dc:creator><![CDATA[Paweł Huryn]]></dc:creator><pubDate>Sat, 18 Jan 2025 07:47:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/09a1cb66-a075-4fef-900f-86cb11c6f0d5_1920x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, Pawe&#322; here. Welcome to the <strong>premium edition</strong> of The Product Compass!</p><p>Every week, I share actionable insights and resources for PMs. Here&#8217;s what you might have recently missed:</p><ul><li><p><a href="https://www.productcompass.pm/p/product-manager-interview-questions">The Ultimate List of 147 Product Manager Interview Questions</a></p></li><li><p><a href="https://www.productcompass.pm/p/the-ultimate-chatgpt-prompts-product-managers">The Ultimate ChatGPT Prompts Library for Product Managers</a></p></li><li><p><a href="https://www.productcompass.pm/p/step-by-step-introduction-to-ai-agents">Step-By-Step Introduction to AI Agents</a></p></li><li><p><a href="https://www.productcompass.pm/p/introduction-to-ai-product-management">Introduction to AI Product Management</a></p></li><li><p><a href="https://www.productcompass.pm/p/product-strategy-examples">Product Strategy Examples: Google Maps, Netflix, OpenAI</a></p></li></ul><p>Consider subscribing and upgrading your account for the full experience:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong>Updated: January 23, 2026</strong></p><p>For the last 2 months, I&#8217;ve been researching dozens of AI tools to test if they can create a SaaS web app without an experienced Engineer.</p><p>I&#8217;ve been repeating that AI can't create anything more than &#8220;a snake game.&#8221; I even shared my frustration <a href="https://www.reddit.com/r/ChatGPTCoding/comments/1hteqt3/can_ai_create_anything_more_complex_than_a_snake/">on Reddit</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!19Pt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!19Pt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 424w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 848w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 1272w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!19Pt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png" width="794" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:794,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82588,&quot;alt&quot;:&quot;Pawel Huryn on Reddit&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Pawel Huryn on Reddit" title="Pawel Huryn on Reddit" srcset="https://substackcdn.com/image/fetch/$s_!19Pt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 424w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 848w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 1272w, https://substackcdn.com/image/fetch/$s_!19Pt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e184d2b-62a4-4223-961e-0793ab98a7fc_794x590.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The consensus was that we&#8217;re not there yet. That &#8220;you always need an experienced Engineer.&#8221;</p><blockquote><p>But I kept trying and realized I was wrong. We can already use AI to create apps that actually work.</p></blockquote><p>I was excited.</p><p>Below is a SaaS web app (not a prototype) for managing customer testimonials with business logic, database, roles, and permissions. Built in 1 day:</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1aff0305-52e4-4b7f-b6a8-7791c2092d3c_993x910.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13233a09-db51-4be0-80af-7179dc38d87e_993x910.png&quot;}],&quot;caption&quot;:&quot;Pawe&#322; Huryn Testimonials&quot;,&quot;alt&quot;:&quot;Pawe&#322; Huryn Testimonials&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb504942-d049-4f3d-9239-acce30c74131_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>How does the solution work from the Administrator's perspective? Here&#8217;s a short walkthrough video:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;402fe7e0-1de4-41c2-ad43-a7cf40897793&quot;,&quot;duration&quot;:null}"></div><p>It was just a research project, but it allowed me to cancel my $250/year SaaS subscription for the testimonial.to:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N-pm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N-pm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 424w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 848w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 1272w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N-pm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png" width="840" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:840,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49735,&quot;alt&quot;:&quot;My canceled testimonial.to subscription&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="My canceled testimonial.to subscription" title="My canceled testimonial.to subscription" srcset="https://substackcdn.com/image/fetch/$s_!N-pm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 424w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 848w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 1272w, https://substackcdn.com/image/fetch/$s_!N-pm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F407728e2-8cf1-435e-919d-a84f295b83c4_840x563.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My canceled testimonial.to subscription</figcaption></figure></div><p>You can test it and recommend my courses or newsletter here: <a href="https://testimonials.productcompass.pm/">https://testimonials.productcompass.pm/</a> &#128591;</p><p>I also validated that I could find new customers (a <a href="https://www.productcompass.pm/i/147027471/go-small-before-you-can-win-big-time-beachhead-strategy">Beachhead Segment</a>) and scale if that were my goal. My first customer has become <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;David Pereira&quot;,&quot;id&quot;:111999300,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbade2fc-66c1-4a30-bf16-ed32608e60e2_1934x1762.png&quot;,&quot;uuid&quot;:&quot;8f836a9c-87a4-4f41-9c64-83a2ae647b16&quot;}" data-component-name="MentionToDOM"></span>. His custom domain: <a href="https://testimonials.d-pereira.com/">https://testimonials.d-pereira.com/</a></p><p>In this post, I explain how to create similar products targeting the must-have needs of selected customer segments. </p><p>For example:</p><ul><li><p>Credly by Pearson (certificates),</p></li><li><p>Calendly (appointments),</p></li><li><p>Bitly (link shortening),</p></li><li><p>Typeform (surveys),</p></li><li><p>Trello (tasks).</p></li></ul><p>Of course, creating products is not your job as a Product Manager (though, who knows, the roles might blend in the future).</p><p>Next week, I will publish a post on AI prototyping, particularly the available tools, what AI prototyping means for cross-functional teams (<a href="https://www.productcompass.pm/p/product-trio">the Product Trio</a>), and how it can be used in your <a href="https://www.productcompass.pm/p/what-exactly-is-product-discovery">Continuous Product Discovery</a>.</p><blockquote><p>But in this issue, we focus on those of you who want to build simple apps, e.g., to: </p><ul><li><p>Get your first product experience.</p></li><li><p>Test your business idea by quickly creating an minimum product people can use (not a prototype).</p></li><li><p>Automate your work without paying for expensive tools.</p></li></ul></blockquote><p>We discuss:</p><ol><li><p>Recommended AI Tools for Creating Minimum Viable SaaS Products</p></li><li><p>&#128274; The AI No-Code Blueprint: Nine Best Practices and Mistakes to Avoid</p></li><li><p>&#128274; Update: Vibe Engineering Best Practices <strong>(January 2026)</strong></p></li><li><p>&#128274; Lovable AI Solutions Architecture Overview (with detailed Supabase, Netlify, and GitHub configuration) </p></li><li><p>&#128274; Video: Collaborating With Lovable to Make Changes in My Product</p></li><li><p>&#128274; Survey About Recording a Step-By-Step Case Study / Live Workshop</p></li></ol><p>P.S. This post was not sponsored.</p><div><hr></div><h2>AI Product Management Bootcamp With Dr. Nancy Li</h2><p>Before we go further, my friend, <a href="https://www.linkedin.com/in/drnancyli/">Dr. Nancy Li</a>, is running the most hands-on <a href="https://www.pmaccelerator.io/ai-product-management-certification">AI Product Management Bootcamp</a> that matches Product Managers with a team of AI Engineers, Data Scientists, and UI/UX Designers to create and launch real-world AI products.</p><p>You can learn more by attending her <strong>free AI PM workshop next week.</strong> Dr. Nancy Li will discuss the 5 key traits that separate AI PM from the pack in 2025 and her secret AI PM lifecycle framework that enabled product managers to launch 21 real-world AI products in 3 months. </p><p>You can register for the free AI PM workshop here:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pmaccelerator.io/AIPM&quot;,&quot;text&quot;:&quot;Register for the free AI PM workshop&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pmaccelerator.io/AIPM"><span>Register for the free AI PM workshop</span></a></p><div><hr></div><h2>1. Recommended AI Tools for Creating Minimum Viable SaaS Products</h2><p>I&#8217;ve researched dozens of tools from three categories. Including, but not limited to:</p><h3>No-code tools</h3><ul><li><p><strong>Bubble</strong>: A popular solution with a drag-and-drop experience and built-in building blocks (list, grid, table, logins, payments, integrations). It&#8217;s complex. I quickly concluded that its learning curve was too high for me.</p></li><li><p><strong>Softr: </strong>Similar to Bubble, but a bit more straightforward to use. It supports multiple data sources (Notion, Airtable, Google Sheets, SQL). I felt that the ability to customize UI was too limited. More importantly, their pricing model (per app user) disqualified it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!041m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!041m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 424w, https://substackcdn.com/image/fetch/$s_!041m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 848w, https://substackcdn.com/image/fetch/$s_!041m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 1272w, https://substackcdn.com/image/fetch/$s_!041m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!041m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png" width="1130" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:1130,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111303,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!041m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 424w, https://substackcdn.com/image/fetch/$s_!041m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 848w, https://substackcdn.com/image/fetch/$s_!041m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 1272w, https://substackcdn.com/image/fetch/$s_!041m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab039080-3da5-492c-8fe0-d20f65fbc3e3_1130x773.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Building testimonials with Softr</figcaption></figure></div></li><li><p><strong>Retool, Airtable: </strong>Platforms for building internal tools, databases, admin panels, and dashboards. Great for internal use but not viable for SaaS applications. </p></li></ul><blockquote><p>Conclusion: Bubble is the best low-code/no-code tool you can use to build a commercial SaaS application. But it might not be worth the effort.</p></blockquote><h3>Local AI coding assistants</h3><ul><li><p><strong>Windsurf:</strong> I installed it as a Visual Studio Code extension. After struggling with installation (Node.js, Python) and learning basic PowerShell commands (thanks ChatGPT!), I was able to use their chat window (Cascade) to work with Claude 3.5 Sonnet. I quickly realized that the number of errors, missing dependencies, and the required technical knowledge were overwhelming.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7-lL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7-lL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7-lL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/daa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154302,&quot;alt&quot;:&quot;Trying to build testimonials with Windsurf&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Trying to build testimonials with Windsurf" title="Trying to build testimonials with Windsurf" srcset="https://substackcdn.com/image/fetch/$s_!7-lL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!7-lL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaa0f3fa-f248-40c5-998e-60992bec5d4b_1024x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Trying to build testimonials with Windsurf</figcaption></figure></div></li><li><p><strong>Cursor:</strong> I installed it as a Visual Studio Code extension. The experience was very similar to Windsurf. Even after starting with &#8220;ready-to-use&#8221; SaaS templates like <a href="https://getbolt.vercel.app/">Bolt Boilerplate</a>, Cursor struggled with the Convex database, Clerk authentication, and making changes in my application.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mic9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mic9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 424w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 848w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 1272w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mic9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png" width="945" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61521,&quot;alt&quot;:&quot;Trying to improve testimonials&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Trying to improve testimonials" title="Trying to improve testimonials" srcset="https://substackcdn.com/image/fetch/$s_!Mic9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 424w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 848w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 1272w, https://substackcdn.com/image/fetch/$s_!Mic9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7701c0-1157-4f0c-814b-2b465faf7f83_945x541.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Trying to improve testimonials with Cursor</figcaption></figure></div></li><li><p><strong>V0: </strong>Based on my research, it resembles Windsurf and Cursor. I didn&#8217;t test it, so I don&#8217;t want to provide inaccurate information.</p></li></ul><blockquote><p>Conclusion: Windsurf, Cursor, and V0 might support Engineers to become even more effective. But if you want to create products just by prompting with minimal technical knowledge, it&#8217;s easier to rely on simplified, preconfigured web interfaces.</p></blockquote><h3>&#8220;Prototyping&#8221; web-based AI tools</h3><p>Tools you can use via the browser:</p><ul><li><p><strong>Databutton</strong>: I initially liked that it doesn&#8217;t present the source code by default. I also quickly integrated with Firebase and added Google authentication for the administrator. And while it&#8217;s a good tool for prototyping, it wasn&#8217;t reliable when working with the database and business logic. I can&#8217;t recommend it for creating SaaS products that actually work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!INs5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!INs5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 424w, https://substackcdn.com/image/fetch/$s_!INs5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 848w, https://substackcdn.com/image/fetch/$s_!INs5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 1272w, https://substackcdn.com/image/fetch/$s_!INs5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!INs5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png" width="1456" height="774" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:774,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!INs5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 424w, https://substackcdn.com/image/fetch/$s_!INs5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 848w, https://substackcdn.com/image/fetch/$s_!INs5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 1272w, https://substackcdn.com/image/fetch/$s_!INs5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd777daab-10d5-4a46-9611-c56f4d5f9146_1555x827.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Building testimonials with Databutton</figcaption></figure></div></li><li><p><strong>Bolt.new</strong>: In my opinion, the second-best tool for prototyping. However, just like Databutton, it struggled with the database (Supabase), business logic, and maintenance. My app kept crashing, and it required significant effort to recover.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KfLr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KfLr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 424w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 848w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 1272w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KfLr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png" width="1122" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143431,&quot;alt&quot;:&quot;Building testimonials with Bolt.new&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Building testimonials with Bolt.new" title="Building testimonials with Bolt.new" srcset="https://substackcdn.com/image/fetch/$s_!KfLr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 424w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 848w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 1272w, https://substackcdn.com/image/fetch/$s_!KfLr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73a70cd7-3598-42ab-8c43-946401cac49e_1122x697.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Building testimonials with Bolt.new</figcaption></figure></div></li><li><p><strong>Lovable</strong>: The last &#8220;prototyping&#8221; product I tested. Initially, I was not impressed. It seemed similar to Bolt.new. But the longer I worked with it, the more I understood how to build a <strong>reliable, easy-to-maintain</strong> solution. That was precisely what I was looking for.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dzaw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dzaw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 424w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 848w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 1272w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dzaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png" width="1122" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135433,&quot;alt&quot;:&quot;Testimonials built with Lovable AI - home page&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Testimonials built with Lovable AI - home page" title="Testimonials built with Lovable AI - home page" srcset="https://substackcdn.com/image/fetch/$s_!Dzaw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 424w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 848w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 1272w, https://substackcdn.com/image/fetch/$s_!Dzaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa63aeeae-24d4-4772-97d1-58bd99279902_1122x677.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Testimonials built with Lovable - home page</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o_Lt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o_Lt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 424w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 848w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 1272w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o_Lt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png" width="1122" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101986,&quot;alt&quot;:&quot;Testimonials built with Lovable AI - the Admin panel&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Testimonials built with Lovable AI - the Admin panel" title="Testimonials built with Lovable AI - the Admin panel" srcset="https://substackcdn.com/image/fetch/$s_!o_Lt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 424w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 848w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 1272w, https://substackcdn.com/image/fetch/$s_!o_Lt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2da7d462-0267-49c6-91bb-c49718241ea0_1122x677.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Testimonials built with Lovable - the Admin panel</figcaption></figure></div></li></ul><blockquote><p>Conclusion: If you want to build simple SaaS products without coding, use Lovable and avoid wasting dozens of hours. When <strong>prompted</strong> <strong>in a specific way</strong> it rarely crushes. And even if that happens, you can quickly recover.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2>2. The AI No-Code Blueprint: Nine Best Practices and Mistakes to Avoid</h2><p>How to prompt and work with AI to create similar apps reliably and without coding?</p><p>Here, I&#8217;ll focus on <strong>Lovable</strong>, but many of those practices are universal.</p><p>First, while Lovable offers a free version, realistically, you need at least a $20 or $50 subscription. The $20 subscription was enough for me to build a single app.</p><p>By default, it uses:</p><ul><li><p><strong>GitHub for code repository</strong>. You need to create a free account, Lovable will take care of the rest.</p></li><li><p><strong>Supabase as a database.</strong> It also offers server-side functions, authentication (login and password, social providers, etc.), and permissions. You need to create a free account and provide a public key. Lovable will take care of the rest.</p></li><li><p><strong>Netlify</strong> <strong>for website hosting.</strong> You must create a free account and connect it to your GitHub repository. Optionally, you can also configure a custom domain in Netlify.</p></li></ul><p>I will discuss the architecture in more detail in the next chapter. Here, let&#8217;s focus on the best practices.</p><div><hr></div><blockquote><p><strong>[Update: January 23, 2026]</strong> The tools have evolved. See &#8220;<em>3. Update: Vibe Engineering Best Practices (January 2026)</em>&#8221; in the next part of the post.</p></blockquote><div><hr></div><h3>Best practice 1: Precisely define small tasks</h3><p>As Product Managers, we are used to communicating the strategic context and goals with clear desired outcomes. Or high-level user stories. I tried the same with AI multiple times.</p><p>But it didn&#8217;t work.</p><p>Instead, you must plan and precisely define small tasks with clearly defined outputs.</p><p>One at a time.</p><h3>Best practice 2: Refer to specific UI elements</h3><p>Our language (e.g., &#8220;<em>the blue button at the top</em>&#8221;) might not be precise enough. Lovable allows you to select a specific element. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gyaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gyaX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 424w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 848w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 1272w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gyaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png" width="1144" height="745" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:745,&quot;width&quot;:1144,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105466,&quot;alt&quot;:&quot;Referring to specific UI elements in Lovable&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Referring to specific UI elements in Lovable" title="Referring to specific UI elements in Lovable" srcset="https://substackcdn.com/image/fetch/$s_!gyaX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 424w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 848w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 1272w, https://substackcdn.com/image/fetch/$s_!gyaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8c5e9d0-d65a-46fe-b811-03382e2aa5a2_1144x745.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Referring to specific UI elements in Lovable</figcaption></figure></div><p>If you use that option, it will perfectly understand the context (component or even a specific part of code) you are asking about.</p><h3>Best practice 3: Understand the building blocks</h3>
      <p>
          <a href="https://www.productcompass.pm/p/how-to-create-saas-apps-with-lovable-ai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>