Shipping this site from my phone
I don't build this site on a laptop. I open the Claude app on my phone, describe what I want, and a few minutes later it's live on bitsmonk.com. The logo in the corner, the links in the footer and this post all shipped that way.
Here's the path every change takes:
- Claude appI describe the change
- AWSClaude Code edits, builds, tests
- GitHubCommit on main, CI checks
- CloudflarePages builds the static site
- bitsmonk.comLive at the edge
The pieces
My phone. The Claude app is the only tool I touch. I write what I want in plain words, like "add my LinkedIn and email" or "I'm not convinced by the logo". There's no editor and no terminal.
A small AWS server. Claude Code runs on an EC2 instance and connects to the app through Remote Control. That's where the work happens. The server has the code, Node.js and a headless browser, so Claude can edit files, build the site, run the tests and look at screenshots before calling anything done.
GitHub. Every finished change becomes a commit on main. GitHub Actions then runs the same checks again as a second safety net: linting, type checks, the build and the browser tests.
Cloudflare Pages. Cloudflare watches the repository. When main changes, it builds the site and publishes the files to its global network.
bitsmonk.com. A minute or two later, the change is live.
What a change looks like
From my side, it's just a conversation:
Claude
- Me: add my linkedin, twitter and email
- Claude: Added LinkedIn, X and email to the home page and footer. All tests pass. Pushed to main.
- Me: i am not convinced with the logo. it should be intuitive
- Claude: Fair. Trying a meditating monk with a halo of bits instead…
Behind those few lines, Claude:
- Edits the files.
- Builds the whole site as static HTML.
- Runs dozens of browser tests, including accessibility checks in light and dark mode.
- Takes screenshots and checks them for anything that looks off.
- Commits the change and pushes it to
main.
The logo is a good example. The first version was an abstract brush circle, and I said it wasn't intuitive. Claude sketched about ten alternatives, threw most of them out after looking at the screenshots, and shipped the meditating monk with a halo of bits that you see at the top of this page.
Why it works
- Tests before every push. Nothing reaches
mainunless the build and browser tests pass. That's what makes it safe to ship changes I didn't type myself. - A static site. There's no server or database to break. The whole site is plain files, which makes it fast, cheap and hard to take down.
- Narrow access. Claude Code works inside a sandbox on the server and can push to this one repository, nothing else.
- Everything is in git. Every change is a commit I can read, review or undo.
If you want to try it
- Start static. Fewer moving parts means fewer things to go wrong when you're not at a keyboard.
- Add tests early. They're what let you trust changes you didn't write line by line.
- Keep access small. Use one repository, a token limited to that repository, and an expiry date.
- Say what "done" means. "Push to main" and "show me first" lead to very different outcomes.
This post was made the same way: I asked for it from my phone.