<?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: Dominique Siacci</title>
    <description>The latest articles on DEV Community by Dominique Siacci (@dsiacci).</description>
    <link>https://dev.to/dsiacci</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%2F4022852%2F590c4faa-3278-45ea-801d-217de0c50e0a.jpg</url>
      <title>DEV Community: Dominique Siacci</title>
      <link>https://dev.to/dsiacci</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dsiacci"/>
    <language>en</language>
    <item>
      <title>We let an AI write code inside our no-code platform. Generating it was the easy part.</title>
      <dc:creator>Dominique Siacci</dc:creator>
      <pubDate>Mon, 13 Jul 2026 11:24:13 +0000</pubDate>
      <link>https://dev.to/goodbarber/we-let-an-ai-write-code-inside-our-no-code-platform-generating-it-was-the-easy-part-1p65</link>
      <guid>https://dev.to/goodbarber/we-let-an-ai-write-code-inside-our-no-code-platform-generating-it-was-the-easy-part-1p65</guid>
      <description>&lt;p&gt;A no-code platform that generates code sounds like a contradiction. It isn't — but it pays to be precise. "No-code" actually covers two different worlds. There's wiring an app's logic together yourself in a visual interface — which is still, fundamentally, programming. And there's configuring pre-built blocks without ever touching the logic. We're firmly in the second camp. So when we generate code with an AI, it isn't to turn you into a programmer: it's to produce the one piece you're missing, the day your need outgrows the catalog.&lt;/p&gt;

&lt;p&gt;Generating that piece, in 2026, is nothing special — everyone can do it. What kept us busy was the other end of the problem: what does it take for a piece of app generated by an AI to still be there — alive, safe, maintainable — long after the prompt?&lt;/p&gt;

&lt;h2&gt;
  
  
  The hard part isn't the generating
&lt;/h2&gt;

&lt;p&gt;Let me say it again, because it's counterintuitive: the hard part isn't the generating. A model that spits out plausible code is everywhere now. What matters — and what's hard — is getting that code to fit in: to plug into the rest of the app, and to hold up over time.&lt;/p&gt;

&lt;p&gt;Here's the concrete flow, from the back office: you describe the section you want. The assistant generates it and renders it live, in context; you refine with the prompt, or edit the code directly when you want to take the wheel. So far, nothing you haven't seen elsewhere.&lt;/p&gt;

&lt;p&gt;The difference is underneath. The section doesn't run in a vacuum: it can reach into the app — who's signed in, the content you've already published, the phone's location or camera — through a set of capabilities the platform opens to it, and nothing else. So what comes out isn't a snippet to paste somewhere else: it's a section that lives in the app — and that will have to keep living there. That "keep living there" is where all the work is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guardrails for longevity, not just safety
&lt;/h2&gt;

&lt;p&gt;The part you'd expect — validating the output, stopping the AI from doing anything stupid — is table stakes. We do it; it's not remarkable. What's more interesting: our guardrails aren't there first for security. They're there for longevity. A narrow, reliable surface survives years of updates; an "anything goes" one breaks the first time the ground shifts. Three choices in that spirit.&lt;/p&gt;

&lt;p&gt;We keep it narrow, on purpose. A section can only reach what the platform opens to it — a surface declared up front and checked server-side, not a promise made in the prompt. Narrow by design: what's narrow and stable keeps working; what's broad and open eventually breaks on its own.&lt;/p&gt;

&lt;p&gt;We steer the model away from its instincts. An LLM has habits: it reaches for solutions that assume a server you run — but a section runs on the user's phone, not on your backend. A good part of the work is pushing it, explicitly, away from what it learned and toward what holds up in that context.&lt;/p&gt;

&lt;p&gt;Generate, validate, correct — in a loop. The model doesn't hand back a blob of code: it has to produce a fixed structure that passes validation before anything becomes installable. If it fails, the exact error goes back to the model to fix; the most common slips get repaired automatically rather than shipped broken. It's that loop — generate, validate, correct — not the generation, that separates "looks like it works" from "it installs."&lt;/p&gt;

&lt;p&gt;The rest follows the same logic: a section can't read another section's data, call a domain you haven't declared, or ship a key in the clear. Nothing spectacular taken one by one. Put together, it's the difference between a demo and something you'd dare leave running in a customer's app.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it unlocks
&lt;/h2&gt;

&lt;p&gt;What that unlocks turns out to be more varied than you'd expect — because the missing piece can be almost anything.&lt;/p&gt;

&lt;p&gt;Often it's mundane, and that's fine. A running club wants its upcoming race calendar: the owner drops in a logo and a CSV of dates, writes "show these races, our logo up top," and the section comes out in the club's colors, with the real dates.&lt;/p&gt;

&lt;p&gt;Sometimes you need a real backend. A yoga studio wants to handle bookings: "this week's classes, a button to reserve a spot, and the number of spots dropping as people sign up." The assistant wires up a Supabase database behind it — tables, row-level access rules, key handling — on its own. The section no longer has just a screen: it has shared, persistent data behind it.&lt;/p&gt;

&lt;p&gt;And sometimes you ask for the improbable — that's the best test. We had it generate Flappy Rush: a playable Flappy Bird clone with a leaderboard shared across all players. To be clear: GoodBarber isn't a game engine, and your app doesn't turn into a game — what it proves is that you can drop a mini-game into a page of a real app. The game isn't the point. The point is that the day the catalog doesn't have what you need, you stop setting it aside: you describe it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt is one more layer
&lt;/h2&gt;

&lt;p&gt;That's why we say "prompt-to-section," not "prompt-to-app." The feature is in beta, open to everyone — and we don't claim an AI builds your whole app from a prompt. We say the opposite, and it's a sturdier claim: the AI produces the missing piece, inside a frame that holds. If that piece is still there in three years, it won't be because of the prompt — it'll be because it inherits a frame that absorbs, continuously, what slowly kills an app nobody touches.&lt;/p&gt;

&lt;p&gt;It's the same logic behind making our platform operable by an AI agent instead of building our own agent, and it's why, for us, AI doesn't replace the frame: it adds to it. The prompt is one more layer. What's underneath hasn't changed.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nocode</category>
    </item>
  </channel>
</rss>
