3The stack
What we build with
Every site and app across my companies is built from the parts below, and we’re proficient in all of it. One part is crossed out on purpose.
| No. | Part | What we use |
|---|---|---|
| 01 | Sites | Hand-written HTML, CSS and JavaScript Our own Node.js site kit Next.js for applications |
| 02 | Hosting and edge | Cloudflare Pages Cloudflare Workers OpenNext (Next.js on Workers) Cloudflare DNS Email Routing Turnstile |
| 03 | Data | Cloudflare D1 Cloudflare R2 Supabase (Postgres) |
| 04 | Code and deploys | GitHub Wrangler |
| 05 | Search | Google Search Console Google Analytics 4 Bing Webmaster Tools IndexNow schema.org JSON-LD llms.txt |
| 06 | Ads | Google Ads (and its API) Meta Ads ChatGPT ads |
| 07 | Research and reporting | Google Keyword Planner SerpApi DataForSEO BrightLocal |
| 08 | Business | Google Workspace Stripe |
| — | Retired. Why |
Retired part
WordPress
We used to be big on WordPress. We don’t recommend it anymore, and here’s the short answer why:
“We stopped recommending WordPress because it was slow, clunky, outdated and always being hacked, and the designs were terrible.”
Michael Blair
What replaced it: pages written by hand, assembled by our own site kit and deployed as plain files to Cloudflare Pages. There’s no plugin list to keep patched and no admin panel for anyone to guess their way into, and each site’s look is designed for that business alone.
Standard equipment
What every site ships with
- Search-ready pagesEach page has its own title, description, canonical address, structured data and share image.
- Its own traffic logA first-party, password-protected /traffic report recorded at Cloudflare’s edge; Google Analytics 4 is the second source.
- Forms that can’t lose a leadA message is saved to a Cloudflare D1 database first and emailed second.
- Submitted on every updateEach deploy tells IndexNow, Google Search Console and Bing Webmaster Tools what changed.
- Watched around the clockA monitor checks every live site’s uptime every five minutes, and its pages, DNS, SSL and forms daily.
- Built for answer enginesAn llms.txt file, FAQs written the way people ask, and crawlers for AI search allowed in.
Questions
Questions about the stack
Does Michael Blair still build WordPress sites?
No. We used to be big on WordPress, and we no longer recommend it. In Michael’s words, it was slow, clunky, outdated and always being hacked, and the designs were terrible. Our sites are hand-written and served from Cloudflare instead.
Where are the sites Michael Blair builds hosted?
On Cloudflare. The pages deploy to Cloudflare Pages, the lead forms save to a Cloudflare D1 database before anyone is emailed, and the two Next.js applications run on Cloudflare Workers. Supabase is used only where a project needs Postgres.
What is the difference between Cloudflare Pages and Workers?
We use both. Pages serves a site’s files from Cloudflare’s network and runs small functions beside them, like our lead form. Workers run code on their own: our two Next.js applications, the private mail worker that sends form alerts, and the monitor that watches every site.
How do you measure traffic on the sites you build?
Every site ships with its own first-party traffic log at /traffic, recorded at Cloudflare’s edge and password-protected — that’s the number we quote. Google Analytics 4 runs as the second source, and Search Console and Bing Webmaster Tools cover search.