Levi Lee

May 30, 2026

I vibe-coded this whole site from my phone

The site you’re reading (tensorowl.dev) was built almost entirely on a phone — from buying the domain to going live. No laptop, no local dev environment, no terminal. Most of it happened while I was lying in bed, thumbing at a screen.

This is the full write-up, with the spotlight on the part that actually surprised me: phone-only vibe coding. The domain, hosting, and analytics bits get a light touch, because they’re really just a few buttons.

But the real point of this post is one idea: I think a phone is now enough to build an MVP. Not a toy or a demo — something with its own domain, automatic deploys, discoverable by Google and AI crawlers, real enough to put in front of people. What follows is me proving it to myself.

The boring parts first (domain + deploy)

  • Domain: bought tensorowl.dev on Spaceship. Clean UI, .dev is cheap, checkout took a few minutes on mobile.
  • Hosting: Cloudflare on the free plan. The site is a static Astro build, and Cloudflare is wired straight to my GitHub repo — every push to main triggers an automatic rebuild and deploy. The free tier is plenty for a personal portfolio.
  • DNS / verification: also just clicks in the Cloudflare dashboard.

All three steps amount to “fill in a form, paste a value, hit confirm.” The interesting part is how the code got written.

The main event: how do you vibe-code from a phone?

“Vibe coding” means you describe what you want and hand the how to an AI agent. You bring intent and taste; it brings the implementation.

I used Claude Code on the web (claude.ai/code). The key difference from desktop Claude Code: it runs on an Anthropic-managed cloud VM, not your machine. You just:

  1. authorize a GitHub repo;
  2. open a session and describe the task in plain language;
  3. it clones the repo, reads the whole codebase, edits code, runs checks, and opens a PR with a summary of the changes.

Because the compute lives in the cloud, the phone is a thin “give instructions, see results” client. Sessions keep running after you close the tab, and you can monitor them from the Claude mobile app. So a small screen, no compiler, and no IDE simply don’t matter — all of that is server-side.

Every change on this site was made by talking:

  • “The title sits too close to the header rule and the layout feels off” → it traced the cause to a CSS specificity issue (.wrap was overriding padding-top), fixed it, and made the spacing responsive while it was there.
  • “Add my social links, a photo, and a self-introduction.”
  • “The Cloudflare deploy failed” → it read the build log, pinned it to sharp (the image-optimization library) not resolving under pnpm, and fixed it by declaring it as a direct dependency.
  • “Write an llms.txt for AI crawlers,” “rebrand the SEO titles to tensorOwl and make en/zh consistent”…

My job was really two things: state the requirement clearly, and judge whether the result is good. That second part matters — vibe coding isn’t fire-and-forget. It hands back screenshots and a change summary each time, and I review against those; if something’s off, I say so and it adjusts.

Reviewing and merging PRs on a phone

Once Claude opens a PR, I go straight to GitHub on my phone (web or app) and:

  • read the diff — which files, which lines;
  • read the PR description (why it changed);
  • hit Merge if it looks right.

The moment it lands on main, Cloudflare auto-deploys, and the live site updates seconds later. The whole loop — idea → code → review → live — closes entirely on the phone. I didn’t touch a computer once.

One caveat: actually read the diff. Don’t merge blind just because you’re on a phone. A failed deploy taught me that the hard way — now the rule is: green check, understood the change, then merge.

Finally: data and discoverability (lightly)

Shipping is the start. You still want to know if anyone shows up and whether Google can find you:

  • GA4: a small gtag.js snippet plus a Measurement ID, and traffic shows up.
  • Google Search Console: Astro generates sitemap-index.xml automatically; I submitted the sitemap, verified ownership via the domain provider, and Google began indexing.
  • I also dropped an llms.txt and a robots.txt so LLM crawlers (ChatGPT, Claude, etc.) can find me too.

Again — all of it done by tapping around on a phone.

The takeaway: a phone is enough for a simple MVP

I’m not claiming phones replace computers — anything complex still wants a real engineering setup. But back to the idea I opened with: I genuinely think a phone is now enough to build an MVP. If your goal is to validate an idea, ship a portfolio, or get a simple product online, then in 2026 a phone really is enough — this site is the proof.

The tools have moved the barrier down from “can you write code?” to “can you describe what you want, and can you judge quality?” For someone like me — political-science grad, self-taught into software — that shift means a lot: the distance between an idea and a live site has never been shorter.

Next time you get a small idea, don’t wait until you’re back at your desk. Pull out your phone and start.

Writing