Real buildClaude's output, unedited
Open the live demo (Claude's unedited files, a made-up example)
I want AI to build me a mobile app
Five plain-English prompts made a market-stall till app that installs from a link and works with no signal. Not an App Store app: you upload four files to GitHub and Cloudflare hosts it free.
- Prompts
- 5
- Claude's time
- 7 min 55 s
- Got wrong
- 6 things
- Tests passed
- 9 of 11
- Model
- claude-sonnet-5-5
- Run on
- 1 October 2026
For: A small business owner who wants an app on their phone (and maybe a partner's), has never built one, has never opened a terminal, and wonders whether it has to go through the App Store and Google Play.
What the five prompts made On a laptop





01 · Before you start
Before you start.
The honest bit first: this isn’t an App Store or Google Play app. It’s a web app. You open a link, add it to your home screen, and from then on it has its own icon, opens full screen and works with no signal. Cloudflare can host that. It can’t host a store app, and for a market stall you don’t need one. Claude said the same when we asked.
You need three free accounts: Claude, GitHub and Cloudflare. Claude makes the files, GitHub keeps them, and Cloudflare puts whatever is on GitHub on the internet. The set-up page walks through all three once, including connecting GitHub to Cloudflare and switching on “Code execution and file creation” in Claude so it can hand you files. Nothing to install, and no terminal.
Our example is Hollow Oak Candles, a made-up Saturday market stall: Small jar £8, Large jar £14, Tin £6 and Gift set £25. The owner has an Android phone, the partner has an iPhone, and the market has almost no signal. Change the details to yours.
One thing to know now: each phone keeps its own sales on the phone. Nothing goes online, which is why it works with no signal, but clearing the browser’s data for the app wipes them. The app has a backup button. Use it.
02 · Set up once
Set up once, then just talk to Claude.
Free accounts you make one time and reuse for every build. Each links to the step-by-step on the set-up page, with what each screen looks like.
- 1. Get a free Claude account. It's where you describe what you want and Claude makes it. The Free plan covers every guide on this site; Pro adds the shortcut where Claude saves changes to GitHub itself.
- 2. Let Claude hand you files. A website is a handful of files. With this switched on, Claude can make them and give them to you to download, ready to upload to GitHub.
- 3. Get a free GitHub account and an empty repository. A repository is a folder on GitHub that keeps every version of your files. It's the one place your site lives: you (or Claude) change the files there, and Cloudflare publishes whatever is in it.
- 4. Get a free Cloudflare account and connect it to your repository. Cloudflare is where your site is live on the internet. Once it is connected to your repository, every change to the files on GitHub goes live by itself, in a minute or two. A site made of plain files costs nothing to host: Cloudflare says requests to static files are "free and unlimited".
- 5. Connect Claude to GitHub. So Claude can read the files that are live now before it changes them, even in a brand new chat. On Pro, the same connection is what lets Claude Code on the web save its changes to your repository.
03 · The prompts
Paste these five, in order.
Plain English, typed into an ordinary Claude chat. On the left, exactly what we sent, word for word; change the details to yours. On the right, what came back. One conversation with claude-sonnet-5-5, run on 1 October 2026. Read the full transcript.
Prompt 1 of 5
Describe the app, and ask the real question: store app, or something simpler?
You say: I sell handmade candles from a market stall on Saturdays. The business is called Hollow Oak Candles. I'd like an app on my phone to log each sale as it happens: I tap the candle, it adds it up, and at the end of the day I can see what sold and how much I took, with cash and card kept separate. The market has almost no phone signal, so it has to work with no internet at all. I have an Android phone, and my partner, who helps on the stall, has an iPhone. My candles: Small jar £8, Large jar £14, Tin £6, Gift set £25. I've never built an app and I'm not technical. Can you make me a real app for the App Store and Google Play, or is there a simpler way? I'd like it to be free to run if possible. Before you make anything, ask me anything you need to know, and tell me in plain English what you'd make, what I'd do with it at the stall, and where the sales would be kept.
1,901 output tokens back · read the full reply
Prompt 2 of 5
Answer its questions, and show it a design you like.
Attach: a screenshot of a website you like the look of · the one we attached
You say: Thanks, that makes sense. A web app on the home screen is fine. My answers: 1. (b) please: my partner sends me their sales at the end of the day and the app adds them to mine. 2. One choice per customer: they might buy three candles and pay once. 3. Always just the price list. No discounts or tips. 4. The candle type is enough. 5. Past Saturdays would be nice, and a total for the month. 6. Yes, I'd like to change prices and add candles myself. 7. Yes, I've got a free Cloudflare account. 8. I don't know. It's a fairly new iPhone. I've attached a screenshot of a website I like the look of. I like the dark background, the big bold writing and the bright orange. Don't copy its words, just the feel. The buttons need to be big enough to tap quickly with cold fingers. Please make it now. Keep it as simple as possible: just the files I'll need to upload, nothing I have to install.
25,267 output tokens back · read the full reply
Prompt 3 of 5
Ask it to try to break the app the way a busy stall would.
You say: Thank you. Before I trust it at the market, please check it carefully as if you were me at a busy stall on a small phone with no signal, and as if you were trying to break it: - the signal drops while the app is open, or I open it for the first time that day with no signal - I close the app, or the phone restarts, halfway through a sale - I tap a candle twice by mistake, or press Cash when I meant Card - a sale just before midnight, then a new Saturday the next week - my partner sends me their sales, and I add the same message twice by mistake - the phone gets full, or I clear my browser history Tell me in plain English what you found, then fix it in the files.
28,531 output tokens back · read the full reply
Prompt 4 of 5
Change something, the way you will once it's in use.
You say: One more thing. At the end of the day I count the cash tin. I always start with £30 of change in it. Could the Today screen let me type in how much is in the tin, and tell me whether it matches the cash sales or is over or short, and by how much? Then tell me which files you changed, and what I need to do so both phones get the new version.
7,429 output tokens back · read the full reply
Prompt 5 of 5
Ask how to put it live from GitHub and on both phones, by clicking, not typing commands.
You say: I've made free GitHub and Cloudflare accounts. On GitHub I made a new repository called hollow-oak-sales (I switched on "Add README"), and in Cloudflare I went to Workers & Pages, Create application, Pages, Connect to Git, and picked that repository, so it should go live by itself whenever the files on GitHub change. I don't want to use the terminal or install anything. Please tell me, step by step, how to get the app into my repository using the GitHub website, what I should see at each step, how I find the address where it's live, how we install it on my Android and my partner's iPhone and check it works with no signal, and how I put a change live later (like the cash tin check, so both phones get it).
2,925 output tokens back · read the full reply
After prompt 1 of 5
Reply to prompt 1 · 18.5 s · 1,901 output tokens
Describe the app, and ask the real question: store app, or something simpler?
A straight answer and some questions, and nothing made yet. Ours advised against a store app and proposed a web app that installs on the home screen: one app for both phones, no review, free to run, working with no signal after the first open. It warned that the two phones wouldn't share sales on their own and asked eight questions, including three ways to combine them.



Reply to prompt 5 · 25.1 s · 2,925 output tokens
Ask how to put it live from GitHub and on both phones, by clicking, not typing commands.
Click-by-click steps in six parts and no new files. Ours: upload the four files (not a folder) with Add file, Upload files, Commit changes; wait for Success under Deployments and find the pages.dev address; install with Chrome on Android and Safari on the iPhone; test in airplane mode with pretend sales you delete afterwards; for a change, upload the new index.html and sw.js together and open the app twice on each phone.
04 · The result
The real thing, on the stage.
Screenshots of exactly what Claude produced, running on our machine on 1 October 2026. Nothing retouched.
We typed five plain-English prompts into one conversation with claude-sonnet-5-5 on 1 October 2026. We ran them through Anthropic’s command-line tool with only its file tools switched on, so Claude could save files into an empty folder, much like file creation on claude.ai. We didn’t use the claude.ai website itself, so your screen will look different. The replies are published as they came back and we edited nothing by hand. Claude spent 474.9 seconds writing them, just under eight minutes.
The first prompt asked straight out whether we could have a real store app or whether there was a simpler way. Claude advised against a store app and suggested the home-screen web app: one app for both phones, no review, free to run. It warned that the two phones wouldn’t share sales on their own and asked eight questions. We picked the option where the partner sends a message at the end of the day and the app adds it in.
In the second prompt we answered and attached a screenshot of one of our own sites, saying we liked the dark background, the big bold writing and the bright orange. Claude saved four files: index.html (the whole app), sw.js (the part that keeps it working with no signal), manifest.json and icon.svg. It said it hadn’t been able to run it on a phone.
We tested that first build at phone size: 22 of 24 checks passed. Pressing Card by mistake could only be fixed by deleting the sale, and a half-built sale vanished if the app closed.
So prompt 3 asked Claude to try to break it like a busy stall. It fixed both of those problems, added a loud warning for when the phone can’t save, and made corrections carry across when sales are merged. It was clear that it had checked by reading the code. Prompt 4 added a cash tin check with a £30 float, and changed the version name inside sw.js, which Claude said is what makes the phones fetch the update.
The final files passed all 26 of our checks. The partner’s message pasted twice said “2 already here, not counted twice”, and £62.50 in the tin against £64 expected gave “Short by £1.50”. With the network off, and then with our test server switched off altogether, the app opened from the copy on the phone and took sales. Installed at the prompt 3 version and then updated, the cash tin check appeared on the second open, as Claude said. We ran the 26 checks once more with the files laid out the way GitHub holds them, README.md included, and they all passed again.
Prompt 5 asked how to get it into GitHub, onto both phones and tested with no signal. Claude’s answer was clear and in the right order, and it told us to upload index.html and sw.js together whenever the app changes. Its phone wording differs a little from Google’s and Apple’s help pages, and on the iPhone it left out the “Open as Web App” switch, so the steps below use their words.
It isn’t perfect. The white “Cash” label on the orange button is faint by accessibility standards (3.12:1, where 4.5:1 is the usual minimum), the cash and card tags on the Today list are 12px, and nothing was tried on a real Android phone, an iPhone or in Safari.





demo.iwantaito.com/build-me-a-mobile-app/: Claude's unedited files, a made-up example.
icon.svg
index.html
manifest.json
sw.js
05 · What we tested
We tried to break it. 9 of 11 held.
Run on our own machine against the unedited files. Nothing deployed while testing.
| What we tried | What happened | Result |
|---|---|---|
| Final files (after prompt 4), served on our machine the way Cloudflare Pages serves plain files, tested in headless Chrome at phone size | 26 of 26 checks passed: no JavaScript errors and no sideways scrolling | Pass |
| Can Chrome install it? | Chrome's own installability check reported no errors, and the offline part took control of the page after one reload | Pass |
| No signal | With the network switched off, and again with our server switched off altogether, the app opened from the copy saved on the phone and took a sale | Pass |
| Mistakes at the till | Large jar + Tin came to £20; a double-tapped Small jar went back to £8 with Undo tap; Card pressed by mistake was fixed with 'Make it cash'; a half-built £25 sale was still there after closing the app | Pass |
| Two phones | The partner's phone sent 2 sales (£31). Pasted once: 'Added 2 sales (£31).' Pasted again: '2 already here, not counted twice.' Total £59, split by phone | Pass |
| Cash tin and midnight | £62.50 counted against £64 expected gave 'Short by £1.50'. A sale at 23:58 on a Saturday stayed on that Saturday, and the next tap after midnight started a new day at £0 | Pass |
| Sending out a change | We installed the prompt 3 version, then served the prompt 4 version at the same address: the cash tin check appeared on the second open, as Claude said, and the earlier sale was kept | Pass |
| First-ever open with no signal | Doesn't load, as expected: each phone needs one open with signal first | Pass |
| Easy to read | The white 'Cash' label on the orange button is 3.12:1 contrast (4.5:1 is the usual minimum for small text), and the cash and card tags on the Today list are 12px | Fail |
| The final files laid out as the GitHub repository holds them (the four files at the top, plus README.md), served the same way | 26 of 26 again. manifest.json and icon.svg didn't change after prompt 3, so uploading only the new index.html and sw.js leaves the repository holding exactly the final set | Pass |
| Prompt 2 first build, same checks | 22 of 24: no quick fix for pressing Card instead of Cash (only Delete), and a half-built sale was lost when the app closed. Prompt 3 fixed both | Fail |
06 · Ship it
Put it live from GitHub, no terminal.
Your files go into your GitHub repository and Cloudflare publishes them by itself. The steps start from Claude's own answer and are checked by us against GitHub's and Cloudflare's documentation, which the sources below link to.
These steps assume you’ve done the set-up page: a GitHub repository (ours would be hollow-oak-sales, with “Add README” on) connected to a Cloudflare Pages project with Connect to Git. Claude’s unedited files are live at demo.iwantaito.com/build-me-a-mobile-app/ (we host them ourselves, with a thin bar on top saying it’s a made-up example); the screenshots are from our own machine.
- Download the four files from Claude: index.html, sw.js, manifest.json and icon.svg.
- On GitHub, open your repository and select Add file, then Upload files. Drag the four files in, not the folder they’re in: they have to sit at the top of the repository. Select Commit changes. You should see five files, the four plus README.md.
- In Cloudflare, go to Workers & Pages and open your project. Under Deployments, wait for the newest one to succeed; it usually takes a minute or two. Your address is shown on the project, something like hollow-oak-sales.pages.dev. Open it on a computer: you should see the dark Hollow Oak screen and a “Whose phone is this?” box.
- On the Android phone, open the address in Chrome, tap More (the three dots), then “Install and create shortcut”, then Install. On the iPhone, open it in Safari, tap Share, then Add to Home Screen (if it’s missing, Edit Actions at the bottom of the list adds it), turn on “Open as Web App” and tap Add.
- Open the app from its new icon on each phone once, with signal. Then switch on airplane mode (and turn wifi off too), open it again and make a pretend sale. Delete the pretend sales afterwards, or they’ll count in Saturday’s total.
- To change something later, ask Claude in the same chat and download the files it changed. Upload them the same way: Add file, Upload files, Commit changes. Files with the same name replace the old ones and the rest stay. Always upload index.html and sw.js together, because sw.js carries the version number. Cloudflare redeploys by itself. Then open the app twice on each phone with signal: the change shows on the second open, and your sales are kept.
- Your own domain is optional: open the project, then Custom domains, then “Set up a domain”. Do it before you install the app on the phones, because each address keeps its own sales.
On Claude Pro, you can skip the downloading and uploading: ask Claude Code on the web for the change, and it saves it to a branch of your repository for you to merge on GitHub, after which Cloudflare puts it live. The set-up page shows how, from a real run.
No GitHub? Cloudflare’s “Drag and drop your files” works too, but every change means dragging the whole folder in again.
Free plan: Claude makes the files, you upload them
FreeTo change something: ask Claude, download the files it changed, and upload just those the same way. Files with the same name are replaced; the rest stay as they are.
£0: Claude Free, GitHub Free and Cloudflare's free plan.
Pro: you chat, Claude saves the change, Cloudflare publishes it
Claude Pro, $20 a monthClaude edits the files and saves them to GitHub on a separate branch, a draft copy. Cloudflare gives that branch its own preview address, so you can look before anything changes. Happy with it? Select Create PR, then on GitHub select Merge pull request, then Confirm merge. Cloudflare puts it live by itself.
07 · What it costs
What it costs.
£0 a month on Claude's Free plan, GitHub Free and Cloudflare's free plan. No App Store or Google Play fees, because it isn't a store app; your own domain is optional.
Hosting is £0 a month. The app is four plain files, and Cloudflare says requests to static files are free and unlimited. GitHub’s free plan is enough for the repository, and Claude’s Free plan covered all five prompts.
A store app would cost more before you’d sold a candle: Apple’s Developer Program is 99 USD a year (Apple says local prices vary), and Google Play has a US$25 one-time registration fee. A web app needs neither. A domain is the only possible cost, and it’s optional.
08 · What it got wrong
6 things Claude got wrong, or left to you.
If Claude gets something wrong, we say so here. We never fix its files by hand; a fix is a follow-up prompt you can see above.
Not tried on a real phone
Our tests ran in headless Chrome on a computer. That can check installability and offline loading, but it can't tap Install on an Android phone or Add to Home Screen on an iPhone. Safari and iPhones were not tested at all, so do the airplane-mode test on both phones before market day.
Store fees in pounds
Claude said Apple charges '£99 a year' and Google 'a one-off £20 or so'. Apple's page says 99 USD a year, with local prices varying by region; Google's says a US$25 one-time fee.
Phone install wording
On Android, Claude said the menu, then 'Install app' or 'Add to Home screen'; Google's help says More (three dots), then 'Install and create shortcut', then Install. On the iPhone it left out 'Open as Web App', which Apple's guide says to turn on before tapping Add, and its 'View More' isn't in Apple's guide (Apple says Edit Actions if Add to Home Screen is missing).
Two claims we couldn't back up
Claude said that on an iPhone the home-screen icon and Safari keep separate data, so use the icon only. That's sensible advice, but it isn't on Apple's page and we had no iPhone to test. Its fix for a failed build includes an output directory of '/', which Cloudflare's documentation doesn't mention (it says to leave the build command blank for plain files); we didn't need or test it.
Small things it missed
The faint 'Cash' label and 12px tags (see the tests), and the '1' badge overlaps the end of 'Large jar' on a phone. The icon is a single drawing (SVG). Chrome accepted it, but Google's install guidance lists 192px and 512px icons, and Claude itself wasn't sure how an iPhone would show it.
Each phone keeps its own sales
Nothing is stored online, which is why it works with no signal. The partner sends a message to merge, and clearing the browser's data for the site wipes a phone's sales. Claude said so and added a backup reminder; use it.
Ours, disclosed
Built it? Where we can help next.
Ours: made by the same studio that runs this site. None of them changes anything above.
Ours
Adapt Progress Evolve
We build apps like this properly, if you'd rather not do it yourself.
Ours
Launch Video Maker
A short launch video to show customers or staff how to install it.
Questions
Questions people ask.
Can Claude build me a real App Store or Google Play app?
Not one we can show you here. When we asked, Claude advised against it for a small business and made an installable web app instead: it goes on the home screen from a link, opens full screen with its own icon, and works with no signal. A store app needs Apple's and Google's developer accounts and review, and Cloudflare can't host one.
Do I need to use a terminal or install anything?
No. You type in a Claude chat, download the four files it makes, upload them to your repository on the GitHub website, then open the link on each phone and add it to the home screen.
Can Claude put it online for me?
Not from a chat on the Free plan: Claude hands you the files and you upload them. Once your GitHub repository is connected to Cloudflare, that upload is what puts it live. On Claude Pro, Claude Code on the web can save a change to a branch of your repository, which you then merge on GitHub.
Does it really work with no signal?
Ours did, after one open with signal. We switched the network off, then switched our server off altogether, and the app still opened and took sales. The very first open needs a connection, so do it on wifi before market day.
Will it work on an iPhone?
Apple's own guide covers it: in Safari, Share, Add to Home Screen, turn on 'Open as Web App', then Add. We tested only in Chrome on a computer, not on an iPhone, so we can't confirm how it behaves there.
Do the two phones share sales?
Not by themselves. Each phone keeps its own, and at the end of the day the partner sends a message (by WhatsApp, say) that the other phone pastes in to add up. Pasting it twice doesn't count anything twice. Live sharing would need an online database.
Sources for this page
13- Claude help: create and edit files with Claude (all plans; Settings > Capabilities)
- GitHub Docs: adding a file to a repository (Add file > Upload files; 100 files at once, 25 MiB each)
- Cloudflare Pages: Git integration (Connect to Git; build command blank; deploys on every commit)
- Cloudflare Pages: serving pages (/index.html redirects; no 404.html means single-page app behaviour)
- Cloudflare Pages custom domains (Set up a domain)
- Cloudflare Workers pricing ('Requests to static assets are free and unlimited')
- Claude Code on the web: get started (Pro, Max and Team; saves changes to a branch)
- Apple: turn a website into an app in Safari on iPhone (Add to Home Screen, Open as Web App)
- Google Chrome Help: use web apps on Android (Install and create shortcut)
- web.dev: what does it take to be installable? (192px and 512px icons)
- Apple Developer Program enrolment (99 USD per membership year)
- Google Play Console: get started (US$25 one-time registration fee)
- Cloudflare Pages: Direct Upload, drag and drop (the no-GitHub alternative)
For developers
For developers.
Skip this if you've never used a terminal. You don't need it.
The command-line route
The git route: clone the repository, copy the four files to its top level, then commit and push to main. Cloudflare Pages builds every push to the production branch (no build command for plain files), and other branches get preview addresses.
git clone https://github.com/<you>/hollow-oak-sales.gitcd hollow-oak-salescp ~/Downloads/{index.html,sw.js,manifest.json,icon.svg} .git add index.html sw.js manifest.json icon.svggit commit -m "Hollow Oak sales app"git push origin mainIf you’re happy in a terminal, the first, command-line version of this page (claude-sonnet-5-5, 1 October 2026) hosted the same kind of app on Cloudflare Workers static assets rather than Pages. Claude put the app files in a public folder next to a wrangler.jsonc:
json
{
"name": "hollow-oak",
"compatibility_date": "2026-10-01",
"assets": { "directory": "./public" }
}npx wrangler devnpx wrangler loginnpx wrangler deploywrangler dev served it at http://localhost:8787. Wrangler 4.131.2 refused that compatibility date (“newest date supported … is 2026-09-18”); 4.145.0 worked. For a custom domain, add "routes": [{ "pattern": "sales.example.co.uk", "custom_domain": true }] once the zone is active on Cloudflare, and deploy again. Bump the cache name in the service worker on every release so phones fetch the new version.
The tests behind this page are in demos/build-me-a-mobile-app/tests/: a Playwright script that serves the files the way Pages does (/index.html redirects to /, no 404 page), asks Chrome for installability errors over the DevTools protocol, and kills the server mid-test to prove the offline copy.
