I built and launched this website in one day
A brand-new site, a domain, a hosting move, an email address and a search listing, all in one Saturday. Here's how it went, including the parts that didn't.
This morning I didn't have a personal website. Tonight you're reading a blog post on one, at its own domain, with its own email address, already known to Google and Bing.
I did it with Claude Code as a pair programmer: I described what I wanted, made the decisions, and pushed back when something looked wrong; it did the typing, the checking and a lot of the fiddly setup. I want to be upfront about that, because it's the most interesting part of the story. It wasn't "AI, make me a website". It was a long conversation, and the result is only good because of the back-and-forth.
Here's how it went, roughly in order, starting with a warm-up the day before.
Friday: two design "skills" and a redesign
On Friday I installed two sets of design skills, basically playbooks the AI follows: Impeccable by Paul Bakaus, for design direction and quality checks, and Emil Kowalski's skills for animation and Apple-style interaction.
The first job was the website for Stamp Days, my app that counts the days you spend in each country. Impeccable doesn't just "make it pretty". It asks who the page is for, then rolls the dice on a visual direction so you don't end up with the same look every AI site has. I got airport wayfinding: graphite signs, signal yellow, a big "You are in Portugal, Day 12" sign at the top.
It looked striking. It was also wrong. A sign saying "You are in Portugal" on a website reads as if the site detected your location, which is misleading. So we threw that hero out and went back to the app's own world: navy, passport paper, and the app's real passport stamps pressing onto the page as you scroll. Lesson one: a bold direction is great, but you still have to read it like a stranger would.
Saturday: building this site
Saturday was for this site. I asked for an Apple-like look: clean, minimal, smooth animations, not too formal. A few moments I enjoyed:
- The dock. The app icons at the top magnify like the macOS Dock. The first version scaled each icon up visually, so they overlapped their neighbours. The real Dock makes icons actually grow, so the others slide apart. We rebuilt it that way, with a spring that measures from where the icons rest, so it doesn't jitter.
- The fixes I couldn't see. At one point I said "you didn't fix any of these", and I was right that I couldn't see the fixes. The site had them. My browser didn't. The first deploy had told browsers to keep images for a year. Now pages are re-checked on every visit, and files get version numbers.
- Phones with no tops. My App Store screenshots were cropped so the top of each phone was cut off. Small thing, very visible. We recropped from the originals and matched each tile's colour to the screenshot's background, so there's no visible edge.
Evening: domain, hosting and email
The site started on Firebase Hosting, which I already use for my apps' privacy pages. Then I bought heymousa.com on Cloudflare, for about $10 a year at cost, with no upsells.
That raised a question: stay on Firebase or move? Firebase's free plan allows about 360 MB of traffic a day, roughly a few hundred visits to this page. That's fine normally, but if a post ever got shared widely, the site would go offline for the rest of the day, exactly when people show up. Cloudflare serves static files with no traffic cap, and the domain was already there. So we moved, and the old address now simply doesn't exist.
Email turned out to be the easiest part: hi@heymousa.com forwards to my normal inbox through Cloudflare's free Email Routing. And because I don't want to be buried in spam, the address never appears in the page's source code. It's put together only when you tap "Send me an email", which bots that scrape pages don't do.
Night: being findable, and counting visitors politely
For search engines, the site has a sitemap and structured data that says who I am and which apps are mine. For AI assistants it has an llms.txt, a plain-text summary they can read. I verified the domain with Google Search Console, submitted the sitemap, and told Bing about the pages through IndexNow. Then I watched the logs: Bing's crawler showed up within the hour, and Google's inspection tool fetched the page the moment I asked it to.
Analytics went in a circle. I started with Google Analytics, which in Germany means a cookie consent banner. Then I switched on Cloudflare's Web Analytics, which counts visits without cookies or personal data, so it needs no banner at all. Google Analytics and the banner are gone, and the site is calmer for it.
The first stats were fun to read. Someone found the site through Facebook. Someone else came from a Bing search. And there was a mysterious visitor from the Netherlands reading my first blog post three times. That was me, on a connection that shows up as Dutch.
What I'd tell you if you're doing the same
- Pick a direction you can explain, then read the page like a stranger. Bold and clear can both be true.
- Trust what you see in the browser, but check the cache before you blame the code.
- Static sites deserve hosting with no traffic cap. Yours might get shared on the one day it matters.
- Don't put your email address in plain text on a website. Build it when someone taps.
- Cookie-free analytics is enough for a personal site, and nobody misses the banner.
- Work with AI like a colleague: give it context, decide yourself, and say so when something's off.
Is the site finished? Not really, and that's the point of having your own place on the web. Next up: more posts like this one, about building and shipping small apps.
If you read this far, thank you. I'd love to hear what you think, or what you're building. Send me an email.