<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zachary Nowroozi</title>
    <description>The latest articles on DEV Community by Zachary Nowroozi (@inquerium).</description>
    <link>https://dev.to/inquerium</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996089%2Fb0ae8305-26f1-4748-9a8c-9b3824f0ca27.png</url>
      <title>DEV Community: Zachary Nowroozi</title>
      <link>https://dev.to/inquerium</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/inquerium"/>
    <language>en</language>
    <item>
      <title>From Research to Deployed App: Can a Non-Technical Founder Build a Secure Web App with Claude Code?</title>
      <dc:creator>Zachary Nowroozi</dc:creator>
      <pubDate>Mon, 22 Jun 2026 09:40:38 +0000</pubDate>
      <link>https://dev.to/inquerium/from-research-to-deployed-app-can-a-non-technical-founder-build-a-secure-web-app-with-claude-code-apm</link>
      <guid>https://dev.to/inquerium/from-research-to-deployed-app-can-a-non-technical-founder-build-a-secure-web-app-with-claude-code-apm</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;How to read this piece:&lt;/strong&gt; Part 1 is a literature review on whether AI coding agents actually make people faster, more capable, and safe. Part 2 is a hands-on guide that turns that research into a deployed web app you build yourself with Claude Code with no coding required.&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;PART 1 — The Research&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In 2021, GitHub released an AI tool called Copilot that changed software development forever (Lakshmanan). Programmers no longer had to scour the internet to seek help or copy code; an AI assistant plugged into their codebase could find answers immediately. Soon after, better generative intelligence emerged, and software became more automated. Tools upgraded from plug-ins, powered by OpenAI's Codex that could only edit one file at a time with little proficiency, to Cursor, a desktop application with stronger models that could solve tougher issues across numerous files. Today, the command line grants access to agentic assistants, where natural language can create an entire prototype in minutes.&lt;/p&gt;

&lt;p&gt;The rapidly progressing capability of coding agents has led to fast adoption, and not enough time to deliberate the extent or context in which they are useful. In particular, this article questions: do AI coding agents actually accelerate development, or do the gains depend entirely on context, and is prototyping the specific case where the usual tradeoffs disappear? Through insight into these topics, we hope to answer experienced developers' concerns, and explore whether or not agentic coding assistants are actually useful in large, complex codebases. Additionally, we will dive into Claude Code — downloadable and used through the terminal, desktop app, IDE, and browser pending an Anthropic subscription — and instruct non-technical founders on how to leverage the tool to build and deploy a safe web app with language alone (Anthropic). It is expected that readers have access to a coding agent, namely Claude Code, if they desire to follow the instructional guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Literature Review&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Coding agents like Claude Code and Codex have shifted from a novelty to a standard for software developers, but the research on their effectiveness has not kept up with how fast they have progressed. Early studies showed that the tools sped up simple, from-scratch work and slowed experienced developers down on large, existing codebases. This review explores three domains where coding agents were measured against human developers — on speed, capability on complex code, and security — and asks how previous findings hold up against recent evidence. The capability gap that once made agents unusable for advanced programming has mostly closed, but the security gap hasn't; this disconnect should shape how anyone builds with these tools today.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Domain 1 — Speed &amp;amp; Context&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Users have consistently expressed that coding agents accelerate their software development, but the research offers mixed results dependent on context. An experiment run by Microsoft, GitHub, and MIT confirmed that generative AI has remained beneficial for easy tasks, finding their "treated group completed…[wiring up an http server in javascript] 55.8% faster" (Peng et al.). However, experienced developers historically have been affected less by agents. The same study by Microsoft, GitHub, and MIT in 2023 concluded that the improvement in speed was felt most by "developers with less programming experience, older programmers, and those who program more hours per day," not senior engineers (Peng et al.). Two years later, the precedent remained, and was proven. Model Evaluation and Threat Research (METR) published their 2025 paper detailing a noticeable gap between perception and tangible benefit of coding agents for experienced developers on large, existing codebases (Becker et al., "Measuring"). Notably, despite "developers forecast[ing] that allowing AI will reduce completion time by 24%… allowing AI actually increases completion time by 19%" (Becker et al., "Measuring"). Agents were the catalyst of slowing down proficient programmers, not accelerating them, yet developers still felt as if "allowing AI reduced completion time by 20%" (Becker et al., "Measuring"). Expert coders' discrepancy between estimation and reality of speed increase is profound. A tenable explanation is that they are faster, but their desired outcome changed while using AI. Larger codebases have products that can be improved, whereas new projects only have an idea that needs to be implemented. Experienced architects know how to find optimizations and can alter the task definition to achieve them; the big repositories they work in provide massive opportunity for improvements. On the other hand, beginner developers do not recognize optimizations as frequently, so will often stick to their original objective; the small repositories they work in provide little opportunity for improvements. When software developers are equipped with an agentic coding assistant their traits are magnified — senior programmers identify more enhancements and iterate faster, whereas their junior counterparts build an initial product quicker. Both parties are positively influenced by AI, but in different ways. In fact, this can be derived from a failed 2026 experiment by METR, who "observed a significant increase in developers choosing not to participate in the study because they do not wish to work without AI, which likely biases downwards [the] estimate of AI-assisted speedup" (Becker et al., "We Are Changing"). Funny enough, the study still discovered "a speedup of 18%," implying an immense velocity advantage for adept coders utilizing agentic tools (Becker et al., "We Are Changing").&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Domain 2 — Capability on Complex Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Widening AI adoption has led to year-after-year growth in written lines of code, but the functionality and maintainability of new output has remained questionable. GitClear, established researchers in AI code assistance, tracked "211 million changed lines of code, authored between January 2020 and December 2024" in enterprise repositories, discovering a 9.2% increase per year in line additions and a 49.9% decrease per year in line moves (Harding). Agentic tools have influenced developers to supplement rather than refactor, but previous tools struggled to solve real challenges through creation. This was emphasized in a 2024 study by OpenAI where agents were given 500 samples of "a code repository and issue description, and challeng[ed]…to generate a patch" that was "verified to be non-problematic by…human annotators"; the frontier model generated solutions with only 33.2% accuracy (Chowdhury et al.). However, time has progressed, and so has artificial intelligence's programming capability. Best-performing coding agents in 2026 score higher than 80% on the same samples from years prior, but still rely heavily on generation (Vals AI). While resolving existing, hard problems has become trivial for AI, future issues may arise because of it. Abundant code addition was a topic of GitClear's aforementioned report, as "instead of developer energy being spent principally on developing new features, in coming years we may find 'defect remediation' as the leading day-to-day developer responsibility" (Harding). AI assistants ensure short-term viability in codebases both simple and complex, but their long-term effects are nuanced; programmers can either continuously generate new solutions, or bear the role of maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Domain 3 — Security, the Gap that Held&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Generative AI has taken strides in capabilities, reducing time of implementation and proving utility in intricate projects by orders of magnitude, but security has stayed behind. When coding agents were introduced in 2021 with the emergence of GitHub Copilot, security was immediately noted as a glaring concern. New York and Calgary University researchers found that from "89 different scenarios for Copilot to complete, producing 1,689 programs…approximately 40% [were] vulnerable" (Pearce et al.). Five years later, after AI became more proficient than most senior developers, vulnerabilities are generated at the same, or higher, rates. Recent studies from the Cloud Security Alliance AI Safety Initiative (CSA) proved "forty-five percent of AI-generated samples failed security tests" during their experiment (Cloud Security Alliance). As the amount of AI-generated code grows exponentially, so does the number of security-flawed repositories; CSA scanned public codebases and found "in January 2026, six CVEs (common vulnerabilities and exposures) were attributable to AI-generated code. In February, fifteen. In March 2026, thirty-five — a near-sixfold increase in two months" (Cloud Security Alliance). This presents a massive risk for any developer. Inexperienced programmers are building product vulnerabilities for an unsuspecting customer, while senior programmers are instilling exploits in enterprise codebases; all parties have a reasonable chance to leak sensitive data that could devastate their company. Since this is an obvious issue, why have artificial intelligence companies not arrived at a resolution? Well, the method in which they created stronger agentic tools is likely the culprit for a lack of security. Specifically, agents are "trained over open-source code available on GitHub…where certain bugs are more visible in open-source repositories, those bugs will more often [be] reproduced" (Pearce et al.).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Throughout the years, both speed and functionality of AI-assisted development have become too valuable for any developer to avoid. However, the immediate benefits from rapidly progressing capability are not the full story. Where prototyping and iterating is easier than ever, maintenance and security became the bottleneck. The job of the developer has fundamentally transitioned from execution to repair. Coding agents supplement code to solve problems that the human must verify. If leveraged correctly, there is no barrier in software development; creating or editing applications can be done in minutes regardless of experience.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;PART 2 — The Build&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Instructional Guide:&lt;/strong&gt; How can a non-technical founder use Claude Code to build and deploy a working web app MVP (React + Supabase + Vercel) without manually writing code?&lt;/p&gt;

&lt;p&gt;After diving into the research, two things are clear: building a working prototype no longer requires knowing how to code, but the coding agent will not keep that prototype safe on its own. An agentic tool like Claude Code now lets a non-technical founder build and deploy a real web app using language alone, but the agent's speed doesn't extend to security or scope, so the work that's left for the human is deciding what to build and verifying what gets built. This guide walks a founder through that process end to end: defining the app, letting Claude Code generate it across React, Supabase, and Vercel, and checking it for vulnerabilities before it goes live. By the end, you'll have a working web app you deployed yourself, and a repeatable way to do it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Before You Start&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Success Criteria&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The success criteria is &lt;em&gt;staying minimal&lt;/em&gt;. Avoid wasting time or money on unnecessary features or products and build only what is required for an initial prototype.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Viable:&lt;/strong&gt; Solves the core problem and nothing else.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working:&lt;/strong&gt; The critical paths function — a user can sign up, do the core action, and the data persists.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure:&lt;/strong&gt; Passes a basic security pipeline — no exposed keys, real authentication, and locked database rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F191varxfr9rn8b7nor4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F191varxfr9rn8b7nor4f.png" alt="Two side-by-side pyramid diagrams contrasting a layered product build with a 'true MVP' slice, illustrating the lean-startup MVP concept." width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 1. The lean-startup definition of an MVP: viable, working, secure, and nothing more.&lt;/em&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Tools to Set Up&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To follow along, the reader needs a Claude Pro subscription to access Claude Code, a repository on GitHub, a Supabase project to store application data, and a project on Vercel to deploy their application. It is recommended that readers keep the created repository in GitHub, project in Supabase, and project in Vercel on separate tabs to make traversal between them efficient for later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Claude Code: $17 a month.&lt;/strong&gt; First, navigate to &lt;a href="http://Claude.com" rel="noopener noreferrer"&gt;Claude.com&lt;/a&gt; and purchase a subscription for a Pro account by selecting "Try Claude" and registering an email address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fujfswotr48amdhpbcbvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fujfswotr48amdhpbcbvz.png" alt="Claude Pro plan card showing $17 per month pricing and a Try Claude button." width="780" height="868"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 2. The Claude Pro plan includes Claude Code — select "Try Claude" to subscribe.&lt;/em&gt;



&lt;p&gt;Next, download Claude Code through the terminal on &lt;a href="http://Claude.com" rel="noopener noreferrer"&gt;Claude.com&lt;/a&gt;: go to the top of the website, select "Other ways to use," choose the "Terminal" option, open your terminal application, paste the command into the terminal window, and hit Enter. For Windows users the process is a little different; I recommend following this &lt;a href="https://www.youtube.com/watch?v=CaHTlfHWd8U" rel="noopener noreferrer"&gt;Windows setup guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb9e76lspjp2453mcoinf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb9e76lspjp2453mcoinf.png" alt="Claude.com download section with the Other ways to use menu open, listing Terminal, VS Code, JetBrains, On the web, and Slack." width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 3. On Claude.com, "Other ways to use" → "Terminal" reveals the install command.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzogxtkd31jyy1tw7j8bz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzogxtkd31jyy1tw7j8bz.png" alt="macOS Spotlight search showing the Terminal application icon." width="704" height="412"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 4. Open the Terminal app (on Mac, search "terminal" in Spotlight).&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fznnsn1qtthiq4iskkj4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fznnsn1qtthiq4iskkj4t.png" alt="Terminal window with the Claude Code curl install command pasted at the prompt." width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 5. Paste the install command into the terminal and press Enter.&lt;/em&gt;



&lt;p&gt;&lt;strong&gt;2. GitHub Repository: Free.&lt;/strong&gt; A repository ("repo") is just the online folder that holds your project's files. Proceed to &lt;a href="http://github.com" rel="noopener noreferrer"&gt;github.com&lt;/a&gt;, select "Sign Up," and register an account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fys5zr86mh2llzjsuq1qh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fys5zr86mh2llzjsuq1qh.png" alt="GitHub top navigation bar with a Sign up button." width="799" height="121"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 6. Create a free GitHub account.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjq8u7ufg0yh4yriwz528.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjq8u7ufg0yh4yriwz528.png" alt="GitHub create-account form with email, password, and username fields." width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 7. Fill in your email, password, and username to finish signing up.&lt;/em&gt;



&lt;p&gt;After creating the account, select the "New" button on the top left of the dashboard, give the repository a name, choose the visibility as &lt;strong&gt;Private&lt;/strong&gt;, and push "Create repository."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhq0eiuasiezntxqd01kg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhq0eiuasiezntxqd01kg.png" alt="GitHub dashboard with the green New repository button highlighted." width="656" height="334"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 8. From the dashboard, click "New" to start a repository.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fson4crizwb2561q22a3p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fson4crizwb2561q22a3p.png" alt="GitHub Create a new repository page with visibility set to Private." width="800" height="674"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 9. Name the repo and set visibility to Private so your code and keys stay out of public view.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ahifc7f2aez4wq1ys7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ahifc7f2aez4wq1ys7g.png" alt="A newly created, empty GitHub repository showing its Quick setup panel." width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 10. Your new, empty repository and its Quick setup panel.&lt;/em&gt;



&lt;p&gt;&lt;strong&gt;3. Supabase Project: Free.&lt;/strong&gt; Supabase is where your app's data and user logins live. Head to &lt;a href="http://supabase.com" rel="noopener noreferrer"&gt;supabase.com&lt;/a&gt;, register an account with the same email used for GitHub (the "Continue with GitHub" option), and select "Start your project."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2y5sjh878xuodsw0y0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2y5sjh878xuodsw0y0p.png" alt="Supabase landing page reading Build in a weekend, Scale to millions with a Start your project button." width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 11. Supabase provides your database and authentication — select "Start your project."&lt;/em&gt;



&lt;p&gt;Next, create an organization: select "New Organization," and give it a name, type, and ensure the plan is Free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftukdd9q31usaetdj2iqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftukdd9q31usaetdj2iqk.png" alt="Supabase Create a new organization form with the Free plan selected." width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 12. Create a free organization to hold your project.&lt;/em&gt;



&lt;p&gt;Within the organization you created, instantiate a project by selecting "New Project."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvx92dzz1c3donj0y8cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvx92dzz1c3donj0y8cp.png" alt="Supabase Projects screen with the New project button." width="800" height="77"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 13. Inside your organization, click "New project."&lt;/em&gt;



&lt;p&gt;Give the project a name, a password you will remember, connect the project to the repository you created in GitHub, then select "Create new project."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5lqe6ox987ytx8vy3y7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5lqe6ox987ytx8vy3y7q.png" alt="Supabase Create a new project form showing project name, database password, region, and the Security toggles." width="800" height="1101"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 14. Configure the project. Note the Security section — you'll lock these tables down with Row Level Security later in the build.&lt;/em&gt;



&lt;p&gt;&lt;strong&gt;4. Vercel Environment: Free.&lt;/strong&gt; Vercel is the service that puts your app online at a public link. On &lt;a href="http://vercel.com/signup" rel="noopener noreferrer"&gt;vercel.com/signup&lt;/a&gt;, register an account through GitHub ("Continue with GitHub").&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb9xrfamq1pvuobqnifz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb9xrfamq1pvuobqnifz.png" alt="Vercel sign-up screen reading Your first deploy is just a sign-up away with Continue with GitHub, Google, and Apple options." width="800" height="804"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 15. Sign up for Vercel with your GitHub account.&lt;/em&gt;



&lt;p&gt;Choose the "Hobby" plan, give a team name, and push "Continue."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgztoauycazdg5ucp35dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgztoauycazdg5ucp35dd.png" alt="Vercel Choose a Plan screen with the Hobby (personal) plan selected and a Team Name field." width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 16. Pick the free "Hobby" plan for personal projects.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fntuv32r8pq7rnxpi08tl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fntuv32r8pq7rnxpi08tl.png" alt="The Vercel Let's build something new dashboard with an Import Git Repository panel." width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 17. The Vercel dashboard, where you'll import your repository at the end.&lt;/em&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;The Workflow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The human owns scope, accounts, and approvals; the agent owns scaffolding and programming. Now that we have registered the accounts, it is time to set up a building environment for Claude Code that allows rapid, safe development.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Set Up the Environment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The first step is to clone (download a copy of) the GitHub repository into a known folder. Navigate to the repository and copy the .git line below the "Quick setup" header.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F803bl3adndz9pyirtt44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F803bl3adndz9pyirtt44.png" alt="GitHub repository Quick setup panel showing the HTTPS .git clone URL." width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 18. Copy the repository's .git URL from the Quick setup panel.&lt;/em&gt;



&lt;p&gt;Then open your terminal application (or PowerShell for Windows users), and clone the empty repository using the format git clone [paste .git line here].&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdktmuyfepiijk7x6l871.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdktmuyfepiijk7x6l871.png" alt="Terminal showing a git clone command cloning the empty repository." width="798" height="92"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 19. Clone the repository into a local folder with git clone.&lt;/em&gt;



&lt;p&gt;Now navigate into the folder where your codebase lives. The folder has the same name as your repository, so go to it with cd [repository name].&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l1024k3nxgkvl8k151e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l1024k3nxgkvl8k151e.png" alt="Terminal showing the cd mymvp command changing into the project folder." width="648" height="144"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 20. Move into your project folder with cd.&lt;/em&gt;



&lt;p&gt;Next, use the claude command to open Claude Code within the codebase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8biammkaly3vnuptbib2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8biammkaly3vnuptbib2.png" alt="Terminal showing the Claude Code welcome screen after running the claude command." width="800" height="142"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 21. Run claude to start Claude Code inside your project.&lt;/em&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Plan the Application&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Head to &lt;a href="http://Claude.ai" rel="noopener noreferrer"&gt;Claude.ai&lt;/a&gt; and log in with your Claude Pro credentials. Create a new project, which will hold the plan you give to Claude Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftny16y1oia17k7a67s84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftny16y1oia17k7a67s84.png" alt="Claude.ai Create a project dialog with name and goal fields." width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 22. In Claude.ai, create a project to draft and refine your plan.&lt;/em&gt;



&lt;p&gt;Inside this project, chat with the best model (currently Opus 4.8), pasting in an .md file (a plain-text "spec") for it to read and improve before you hand it to Claude Code. A sample spec is provided below for you to adapt to your own idea. &lt;strong&gt;Do not paste the altered .md file into Claude just yet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adapt the &lt;strong&gt;Overview&lt;/strong&gt;, &lt;strong&gt;Must-Have Features&lt;/strong&gt;, &lt;strong&gt;Not in This MVP&lt;/strong&gt;, and &lt;strong&gt;Data&lt;/strong&gt; sections to your own idea, and leave the rest as written (those parts keep any build safe and on-scope):&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;br&gt;
Before you paste the spec into the chat, locate the "Connect" button in your Supabase project, change the framework to "React," and copy the prompt next to "Give your agent everything it needs."

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fauhjyruprck1ey7q2hd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fauhjyruprck1ey7q2hd7.png" alt="Supabase Connect panel with Framework set to React and Variant set to Vite." width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 24. Supabase's Connect panel generates the exact code your app needs — set Framework to React.&lt;/em&gt;



&lt;p&gt;Now, in the Claude project, paste your spec, add a prompt asking Claude to improve the plan, and paste the connection instructions you copied from Supabase. A prompt that works well:&lt;/p&gt;

&lt;p&gt;"I am creating a prototype for &lt;strong&gt;[your app idea]&lt;/strong&gt;. I need you to vet this plan for speed, functionality, and security, and also provide the instructions from Supabase to connect the application to a database I have created (below). The .md file you will create will be given to Claude Code within the codebase, so ensure the rules I established are &lt;strong&gt;upheld&lt;/strong&gt;, and provide a more detailed step-by-step guide for Claude Code to carry it out."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgtb2y4fdj3a64mz867b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgtb2y4fdj3a64mz867b.png" alt="Annotated Claude chat showing the pasted spec, the planning prompt, and the pasted Supabase connection instructions." width="799" height="678"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 25. Combine three things in one message: your spec, your planning prompt, and Supabase's connection instructions.&lt;/em&gt;



&lt;p&gt;Claude returns a refined, downloadable spec file. Two quick reminders it will surface are keep your GitHub repo &lt;strong&gt;private&lt;/strong&gt; while you build, and remember that Vercel won't read .env.local, you'll re-enter those variables in Vercel's settings at deploy time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7admfdkasdn0q15s9t6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7admfdkasdn0q15s9t6d.png" alt="Rendered preview of the refined Claude code spec Markdown file." width="800" height="942"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 26. Claude produces a single refined spec file to hand to Claude Code.&lt;/em&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Build the Application&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;At last, it is time to build the prototype with Claude Code. Copy the refined spec from the browser and paste it into Claude Code in your terminal. To let it apply changes automatically, press &lt;strong&gt;Shift + Tab&lt;/strong&gt; together to enable "accept edits on."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm11zud0ha4z6vmo396x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm11zud0ha4z6vmo396x1.png" alt="Claude Code terminal with the refined spec pasted as the first message." width="799" height="137"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 27. Paste the refined spec into Claude Code as your first message.&lt;/em&gt;



&lt;p&gt;After receiving the spec, Claude Code enters Plan Mode, inspects the project, and writes a refined plan of execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbxdogki97hkkfxiar3po.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbxdogki97hkkfxiar3po.png" alt="Claude Code terminal showing Entered plan mode and an initial project directory check." width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 28. Claude Code enters Plan Mode and inspects your empty project first.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpi9bccjqg63gufi1ofmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpi9bccjqg63gufi1ofmr.png" alt="Claude Code's written execution plan listing the build steps for the task-tracker MVP." width="800" height="1105"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 29. The plan: scaffold, install, store secrets, create the table with Row Level Security, build auth and tasks, then deploy.&lt;/em&gt;



&lt;p&gt;Review the plan, then choose option 1 to approve it and let Claude Code build with auto-accept.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtjmdfemp3urbe9cx8sq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtjmdfemp3urbe9cx8sq.png" alt="Claude Code plan-approval menu with option 1, Yes and use auto mode, selected." width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 30. Approve the plan to let Claude Code build automatically.&lt;/em&gt;



&lt;p&gt;Claude Code will reach a stopping point where it's your job to run the database setup (SQL) in Supabase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7pzeemy9welpgrj6y3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7pzeemy9welpgrj6y3n.png" alt="Claude Code terminal showing it is blocked on the user for two Supabase dashboard steps." width="797" height="146"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 31. Claude Code pauses and hands you the two steps only you can do in the Supabase dashboard.&lt;/em&gt;



&lt;p&gt;To do this, print the SQL file with ! cat supabase/schema.sql, copy the output, paste it into the SQL Editor in your Supabase project, and click "Run."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F04t5dawp7xn6cngphgjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F04t5dawp7xn6cngphgjh.png" alt="Terminal output of cat supabase/schema.sql showing the tasks table and Row Level Security policies." width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 32. Print the generated SQL with ! cat supabase/schema.sql and copy it.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhe9asaw043g1ac0zj01g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhe9asaw043g1ac0zj01g.png" alt="Supabase left sidebar with the SQL Editor item selected." width="420" height="1186"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 33. In Supabase, open the SQL Editor.&lt;/em&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb68xdsve92m4psggf51v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb68xdsve92m4psggf51v.png" alt="Supabase SQL Editor with the schema pasted and a Success, No rows returned result." width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 34. Paste the SQL and click Run. "Success. No rows returned" means the table and security rules were created.&lt;/em&gt;



&lt;p&gt;Go back to Claude Code in the terminal, tell it you've completed the steps it set out for you, and tell it to continue with its plan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ojchcetzgkfn72pq33a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ojchcetzgkfn72pq33a.png" alt="Claude Code terminal resuming the build after the dashboard steps are confirmed complete." width="800" height="18"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 35. Confirm you're done, and Claude Code finishes the build, committing as it goes.&lt;/em&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Deploy the Prototype&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After building the initial product, it's time to deploy and test it. First, confirm Claude Code is done generating.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fscp3xts9ey6lcqhms3ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fscp3xts9ey6lcqhms3ij.png" alt="Claude Code's final summary confirming the app is working, viable, and secure, with deployment left to the user." width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 36. Claude Code's done-summary: working, viable, and secure, with the deploy step left to you.&lt;/em&gt;



&lt;p&gt;Copy the names and values of the environment variables (VITE_SUPABASE_URL, VITE_SUPABASE_PUBLISHABLE_KEY), then head to your Vercel dashboard and import your GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp2uwoa65go2buhwpzrd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp2uwoa65go2buhwpzrd.png" alt="Vercel Import Git Repository screen listing the project repository." width="799" height="271"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 37. In Vercel, import the GitHub repository you built in.&lt;/em&gt;



&lt;p&gt;Select &lt;strong&gt;Vite&lt;/strong&gt; as the application preset, paste your copied environment variables, and push "Deploy."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh7fpe9og0t5i6jej5f9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh7fpe9og0t5i6jej5f9w.png" alt="Vercel New Project import screen with the Vite preset and the two Supabase environment variables entered." width="800" height="1201"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 38. Choose the Vite preset and add the two Supabase variables — Vercel needs its own copy because it can't read .env.local.&lt;/em&gt;



&lt;p&gt;You now have a deployed web application with a public URL for others to access. Click the window below the "Congratulations" header to visit your prototype online.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmrlwijmsh9tijsw4x7bj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmrlwijmsh9tijsw4x7bj.png" alt="The deployed app showing a My Tasks sign-up and login screen." width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 39. Your live app: a "My Tasks" sign-up and login screen, deployed to a public URL.&lt;/em&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Verify It Before You Trust It&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The research throughout Part 1 concludes coding agents generate working features quickly, but they do not reliably secure them. Recent testing found that nearly half of AI-generated code samples failed security checks (Cloud Security Alliance). So the final, and most important, step is verification. Claude Code already ran a security pass during the build, but you should confirm it yourself. None of the following requires writing code; you are checking the three things from the Success Criteria, which is &lt;strong&gt;exposed keys, weak authentication, and open database rules&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. No exposed keys.&lt;/strong&gt; In Claude Code, paste: &lt;em&gt;"Search the entire repository, including git history, for my Supabase URL or any key string. Confirm none are committed, and that .env.local is listed in .gitignore."&lt;/em&gt; You want to hear that nothing sensitive is tracked. (Your publishable key is designed to ship in the browser; this check is about not committing it to source, while Row Level Security does the real protecting.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real authentication.&lt;/strong&gt; Open your deployed site in a private/incognito window &lt;em&gt;without&lt;/em&gt; logging in. You should see only the login screen, no task data, no way to read or write anything. Every action that touches data should require a logged-in session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Locked database rules (RLS).&lt;/strong&gt; In Supabase, go to &lt;strong&gt;Authentication → Policies&lt;/strong&gt; (or the Table Editor's RLS indicator) and confirm Row Level Security is &lt;strong&gt;on&lt;/strong&gt; for your tasks table, with all four policies present (select, insert, update, delete). Then run the real test by signing up a &lt;em&gt;second&lt;/em&gt; account and confirm it sees an empty list, but not the first account's tasks. If two accounts can ever see each other's data, stop and fix RLS before sharing the URL.&lt;/p&gt;

&lt;p&gt;To make Claude Code do the heavy lifting, one prompt covers it: &lt;em&gt;"Do a final security pass and show me what you checked: confirm no secrets are committed, that login is required for all reads and writes, and that RLS is enabled with per-user policies. Then tell me how to verify the two-account isolation test myself."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If all three pass, your prototype meets the "Secure" bar in the Definition of Done. If any fail, treat it as a stop-the-line issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Iterate the Prototype&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once the MVP is verified and live, you'll want to add to it. The discipline that kept the first build safe is the same that keeps the next one safe; the human owns scope, the agent owns execution.&lt;/p&gt;

&lt;p&gt;To add a feature:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Update the spec, not just the chat.&lt;/strong&gt; Your spec file (often saved as CLAUDE.md) is the single source of truth. Move the new feature into "Must-Have Features" and out of "Not in This MVP" so the agent's guardrails stay accurate.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Describe one feature at a time, in plain language.&lt;/strong&gt; "Let a user edit a task's text after creating it" is a complete instruction. Resist bundling five ideas into one prompt.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make Claude Code re-enter Plan Mode.&lt;/strong&gt; Have it lay out the files, any new database columns or SQL, and the build order, then approve before it builds as you did the first time.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-run the security pass after every addition.&lt;/strong&gt; New tables or columns need their own Row Level Security policies.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit in small pieces.&lt;/strong&gt; One feature, one commit, one deploy. If something breaks, you can rewind to the last working state with Claude Code's checkpoints (/rewind).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The trap to avoid is scope creep. Research shows experienced developers quietly expand a task while an agent works, and a non-technical founder can do the same without noticing. If you catch yourself adding "just one more thing" each session, stop and write it down as a real feature with its own spec entry first!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Troubleshooting&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Debugging&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A few issues come up often for first-time builders. Most are quick fixes you can hand straight to Claude Code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Missing Supabase env vars" error.&lt;/strong&gt; The app can't see your keys. Confirm .env.local exists in the project root and that you restarted the dev server after creating it. Vite only reads env files at startup.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You signed up but can't log in.&lt;/strong&gt; Email confirmation is probably still on. In &lt;strong&gt;Supabase → Authentication → Sign In / Providers&lt;/strong&gt;, turn off "Confirm email" for the prototype, or click the confirmation link Supabase emailed you.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works locally but the deployed site is blank or errors.&lt;/strong&gt; Vercel does not read .env.local. Add VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY in &lt;strong&gt;Vercel → Settings → Environment Variables&lt;/strong&gt;, then redeploy.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reading and copying SQL from the terminal is awkward.&lt;/strong&gt; Install a free IDE like VS Code to open /supabase/schema.sql and copy it without the cat command. It also makes reviewing Claude Code's changes easier.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want to see it before it goes live.&lt;/strong&gt; Ask Claude Code to &lt;em&gt;"run the app on localhost so I can test it in my browser before we deploy."&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When in doubt, paste the exact error text into Claude Code and ask what it means and how to fix it. The agent debugs its own output well when you give it the message.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Connect Vercel to Claude Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After your first manual deploy, you can let Claude Code handle future deploys for you. Vercel publishes a plugin that turns your coding agent into a deployment assistant. In your terminal, run: "npx plugins add vercel/vercel-plugin”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftba2o8elq1j8l832craq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftba2o8elq1j8l832craq.png" alt="Vercel Install Coding Agent Plugin panel showing the npx plugins add vercel/vercel-plugin command." width="798" height="153"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Figure 41. Vercel's coding-agent plugin lets Claude Code deploy for you from the terminal.&lt;/em&gt;



&lt;p&gt;This is optional, and best added once you're comfortable with the manual flow so you understand what the automation is doing. With the plugin installed, you can ask Claude Code to deploy, check build status, and pull environment variables without leaving the terminal, removing the last few dashboard steps from your loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Closing&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You now have a deployed, verified web app you built by describing it in natural language, and a repeatable loop for the next one. Remember, agents make the building fast, but the value you add is everywhere they fall short; choose the smallest viable scope, and verify security consistently throughout the process.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Works Cited&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Part 1
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic. "Claude Code." &lt;em&gt;Anthropic&lt;/em&gt;, &lt;a href="http://www.anthropic.com/product/claude-code" rel="noopener noreferrer"&gt;www.anthropic.com/product/claude-code&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Lakshmanan, Ravie. "&lt;a href="https://thehackernews.com/2021/06/github-launches-copilot-ai-powered-code.html" rel="noopener noreferrer"&gt;GitHub Launches 'Copilot' — AI-Powered Code Completion Tool&lt;/a&gt;." &lt;em&gt;The Hacker News&lt;/em&gt;, 30 Jun 2021, &lt;a href="https://thehackernews.com/2021/06/github-launches-copilot-ai-powered-code.html" rel="noopener noreferrer"&gt;https://thehackernews.com/2021/06/github-launches-copilot-ai-powered-code.html&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed &amp;amp; Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Becker, Joel, et al. "Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity." &lt;em&gt;METR&lt;/em&gt;, 10 July 2025, &lt;a href="http://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Becker, Joel, et al. "We Are Changing Our Developer Productivity Experiment Design." &lt;em&gt;METR&lt;/em&gt;, 24 Feb. 2026, &lt;a href="http://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;metr.org/blog/2026-02-24-uplift-update/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Peng, Sida, et al. "The Impact of AI on Developer Productivity: Evidence from GitHub Copilot." &lt;em&gt;arXiv&lt;/em&gt;, 13 Feb. 2023, &lt;a href="http://arxiv.org/abs/2302.06590" rel="noopener noreferrer"&gt;arxiv.org/abs/2302.06590&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capability on Complex Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chowdhury, Neil, et al. "Introducing SWE-bench Verified." &lt;em&gt;OpenAI&lt;/em&gt;, 13 Aug. 2024, &lt;a href="http://openai.com/index/introducing-swe-bench-verified/" rel="noopener noreferrer"&gt;openai.com/index/introducing-swe-bench-verified/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Harding, Bill. &lt;em&gt;AI Copilot Code Quality&lt;/em&gt;. GitClear, 2025, &lt;a href="http://www.gitclear.com/ai_assistant_code_quality_2025_research" rel="noopener noreferrer"&gt;www.gitclear.com/ai_assistant_code_quality_2025_research&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Vals AI. "SWE-bench." &lt;em&gt;Vals AI&lt;/em&gt;, &lt;a href="http://vals.ai/benchmarks/swebench" rel="noopener noreferrer"&gt;vals.ai/benchmarks/swebench&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security, the Gap that Held&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud Security Alliance. "Vibe Coding's Security Debt: The AI-Generated CVE Surge." &lt;em&gt;Cloud Security Alliance&lt;/em&gt;, 4 Apr. 2026, &lt;a href="http://labs.cloudsecurityalliance.org/research/csa-research-note-ai-generated-code-vulnerability-surge-2026/" rel="noopener noreferrer"&gt;labs.cloudsecurityalliance.org/research/csa-research-note-ai-generated-code-vulnerability-surge-2026/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Pearce, Hammond, et al. "Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions." &lt;em&gt;arXiv&lt;/em&gt;, 2021, &lt;a href="http://arxiv.org/abs/2108.09293" rel="noopener noreferrer"&gt;arxiv.org/abs/2108.09293&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Part 2
&lt;/h3&gt;

&lt;p&gt;Smith, Lucy. "Minimum Viable Product (MVP)." &lt;em&gt;Snov.io&lt;/em&gt;, 11 Nov. 2023, &lt;a href="http://snov.io/glossary/minimum-viable-product/" rel="noopener noreferrer"&gt;snov.io/glossary/minimum-viable-product/&lt;/a&gt;. (Figure 1)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>security</category>
    </item>
  </channel>
</rss>
