Website in, React app out
Standing up the open-source site-to-React builder, and the five things it does not ship with
Point it at a URL, get a modern React app you can then edit by chatting at it. MIT licensed, roughly fifteen minutes to run locally, and the setup below is taken from the project’s own README rather than second-hand. Worth being clear-eyed about two things: upstream calls it an example app, not a product, and what it hands you is a builder with no login, no billing and no usage cap — which is the difference between a demo and something you can charge for.
An open-source builder that scrapes a website and rebuilds it as a modern React app, which you then refine by chatting with it. It is MIT licensed, so you can run it, modify it, host it and charge for it. One thing worth knowing up front, because it changes your expectations: the project describes itself as an example app built by the team behind the scraping API it uses, and points at the commercial product for a full cloud solution. It is a working demonstration, not a finished SaaS.
Four steps, then you are editing
Scrape — read the source site
The scraping API pulls the page content and structure into something a model can work from.
Convert — rebuild it as React
An AI model of your choosing turns that layout into React components.
Preview — run it in a sandbox
The result boots in a hosted sandbox so you see the live app rather than a code dump.
Edit — change it by asking
From there it is conversational: describe the change and it rewrites the components.
Clone and install
pnpm is what the project uses; npm and yarn work equally well.
Create .env.local in the project root
You need the scraper key, exactly one AI provider, and one sandbox provider. Everything else is optional.
The keys, and where each comes from
Two traps in the shipped example file. It contains a stray “=======” line left over from an unresolved merge, which is not a valid entry and will confuse anything that parses it. It also lists a gateway key the README’s own template omits, and that key silently takes precedence over your individual provider keys when present — so if you paste the whole file and wonder why your chosen model is being ignored, that is why. Use the README’s template as the base and add only what you need.
Run it
Then open http://localhost:3000.
What MIT actually lets you do
This is the part that makes the whole thing interesting, and it is genuinely permissive — confirmed against the LICENSE file in the repository.
What the repository does not give you
None of this is a criticism — it is a demo of a builder, and these are the parts a business needs that a demo has no reason to include.
The three additions that turn it into a product
Authentication first, always
A hosted auth provider is an afternoon of work and both of the obvious ones have a free tier. This is not the interesting part, but it is the part that has to exist before anything else matters.
A billing layer
Standard payment processing, wired to whatever plan shape you choose. Nothing exotic is required here.
Usage limits per account
Every generation calls a model and a scraper on your keys. Without a per-user ceiling, one enthusiastic user — or one bot — drains the account. Cap first, tune later.
Who this actually suits
Put the login in before it goes on a public URL — not after, not once you have a few users, not next week. An open instance means every generation anyone runs is billed to your provider accounts, and a builder that scrapes and calls models on demand is exactly the sort of endpoint that gets found and abused. This is the single highest-consequence step in the entire setup.
The setup steps, environment template and localhost address here come from the project’s own README and example environment file rather than second-hand, and the MIT licence was confirmed against the LICENSE in the repository on 16 September 2026, along with the merge-marker and gateway-key quirks noted above. Figures quoted elsewhere about the commercial product’s valuation and revenue were left out, as they were not independently verifiable.