Skip to content
bitsmonk
Writing

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:

  1. Claude appI describe the change
  2. AWSClaude Code edits, builds, tests
  3. GitHubCommit on main, CI checks
  4. CloudflarePages builds the static site
  5. bitsmonk.comLive at the edge
From a message on my phone to a live change, usually within a few minutes.

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

  1. Me: add my linkedin, twitter and email
  2. Claude: Added LinkedIn, X and email to the home page and footer. All tests pass. Pushed to main.
  3. Me: i am not convinced with the logo. it should be intuitive
  4. Claude: Fair. Trying a meditating monk with a halo of bits instead…
Two real requests from building this site.

Behind those few lines, Claude:

  1. Edits the files.
  2. Builds the whole site as static HTML.
  3. Runs dozens of browser tests, including accessibility checks in light and dark mode.
  4. Takes screenshots and checks them for anything that looks off.
  5. 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 main unless 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.