wordpress cloudflare

Before you dive in, make sure you'll start 2026 the right way. Track your new year resolutions in style, with the right tool. I built addTaskManager exactly for this, but you can use it to track finances, habits, anything.

Two days ago, I flipped the switch. After almost 20 years on WordPress, dragosroua.com now runs as a static site on Cloudflare Pages, built with Astro. But here’s the twist: WordPress isn’t gone. It’s still running on a different domain, but now as my backend CMS.

I still write in WordPress. I still hit publish in WordPress. But what the world sees is static HTML, deployed in seconds, optimized for speed and search engines.

Why Decouple After 15 Years?

WordPress and I never had problems. From 2008 onward, I published consistently—even ran 100-day writing challenges. The blog grew popular in the productivity space, listed alongside Zen Habits and Steve Pavlina. WordPress handled it all.

But over almost 2 decades, clutter grew exponentially.

The real problems:

  • 2,000+ posts with inconsistent SEO (half had zero optimization)
  • Cluttered category structures that made little to no sense anymore
  • Plugin bloat from experiments I’d forgotten – polluting content with weird shortcodes
  • No systematic approach to metadata
  • WordPress serving dynamic pages when 99% of my content never changed

The unexpected consequence of success was complexity.

The Actual Architecture: WordPress as Backend

Here’s how it works now:

Write in WordPress (wp.dragosroua.com)
        ?
Hit "Publish" or trigger webhook
        ?
GitHub Actions pulls content via WordPress API
        ?
Astro builds static site with optimized SEO
        ?
Deploys to Cloudflare Pages (dragosroua.com)
        ?
Live in 30 seconds

WordPress remains my CMS:

  • Familiar writing interface (20 years of muscle memory)
  • Acts as media library for images
  • Draft/scheduling capabilities

But the public site is pure static:

  • No database queries on page load
  • No PHP execution
  • geographically balanced CDN-distributed HTML that loads in 400ms

Best of both worlds. I keep the admin interface I know, but serve the performance users deserve.

Why This Matters: The SEO Blindness Problem

The real trigger wasn’t speed or security—it was SEO blindness at scale.

With 2,000+ posts accumulated over 20 years:

  • Half had auto-generated excerpts as meta descriptions
  • Focus keywords? Random or missing (if any at all)
  • Internal linking? Chaotic and most of the time broken
  • Image alt tags? Inconsistent
  • URL structure? Whatever WordPress decided in 2008 – outdated or incomplete schema

The static rebuild forced systematic optimization:

  • Every post got a real meta description (AI-assisted, human-reviewed)
  • Every post got focus keywords based on actual content
  • Refactored site-wide schema: clean HTML semantics
  • Image optimization became part of the build process
  • Internal linking could be programmatically verified

This wasn’t migration—it was refactoring at scale.

The Technical Stack: Astro + Cloudflare + WordPress API

After 35 years of coding (since 1987), I’ve learned to trust tools that solve one thing well:

WordPress for content management. It’s still the best writing interface I’ve used. The Gutenberg editor works. The media library works. Version control works.

Astro for static generation. Astro is philosophy-agnostic framework that renders to pure HTML with zero JavaScript bloat. It pulls WordPress API data and produces fast, clean pages.

Cloudflare Pages for hosting. Their free tier handles millions of requests on a global CDN. It takes care of HTTPS, including certificates and the deploy is made via a simple GitHub push.

The bridge: A build script that:

  1. Fetches posts from WordPress REST API
  2. Converts to HTML with proper frontmatter
  3. Optimizes images (WebP conversion, responsive sizing)
  4. Generates consistent SEO metadata
  5. Builds static site
  6. Deploys automatically

Two trigger modes:

  • Webhook: Publish in WordPress ? webhook hits ? rebuild starts automatically
  • Manual: Run build script when I’ve batch-edited multiple posts

Most days, it’s invisible. Write, publish, live in 30 seconds.

The Migration Process: Declutter, Reorganize, Optimize

Step 1: Content Audit (The Hard Part)

Not deletion—curation. I went through 2,000+ posts asking: Does this still serve my purpose?

  • The “100 Ways To Live A Better Life” series—essential, stayed
  • 100-day writing challenges—great content, kept
  • financial resilience, location independence, meaningful relationships posts: all kept
  • Random promotions or tutorials about dead tools—archived locally, not published
  • Half-formed thoughts that never matured—let go

I kept 1,800 posts. Not because I deleted 200, but because I chose 1,800.

Step 2: Systematic SEO Optimization

For each of the 1,800 posts, I needed:

  • Meta description (150 chars, compelling, keyword-aware)
  • Focus keyword (based on actual content, not guessing)
  • Clean URL structure
  • Proper heading hierarchy
  • Image alt text that describes, not decorates

I wrote a few scripts to make all this happen, but every single meta description got human review. This took about 120+ hours of work. This was the actual migration process.

Step 3: Build the Astro Frontend

Astro let me design the site I wanted—not some random WordPress theme that I need to customize for hours or days.

Clean typography, lightning fast loading and minimalistic design that puts words first. I got rid of the comments too. Also, no more sidebar clutter. No “related posts” algorithm. Just writing and whitespace.

Step 4: Test, Deploy, Monitor

First build took 2 minutes for 1,800 posts. Subsequent rebuilds when I publish one new post: 50-60 seconds.

Speed comparison:

  • Old WordPress site: 2.5 seconds average load
  • New static site: 400ms average load

That’s 6x faster.

What I Learned: Technical and Philosophical

On organization: Entropy isn’t failure—it’s the natural result of consistent creation. Refactoring isn’t fixing what’s broken; it’s honoring what you built by making it sustainable.

On tools: WordPress is a brilliant CMS. It’s a mediocre web server. Decoupling lets each tool do what it does best.

On SEO at scale: You can’t optimize 2,000 posts one admin page at a time. You need systematic processing. Static generation forces this discipline.

On speed: Fast sites aren’t just better UX—they’re respect for the reader’s time. Every millisecond of load time is cognitive friction. Also, this confirmed my assumption that Google prioritizes fast loading sites, regardless of their content. In other words, you can be brilliant, but if your site is slow, Google thinks you’re not existing.

On future-proofing: Static files are portable. If Cloudflare shuts down tomorrow, I have HTML files that work anywhere. If WordPress dies, my writing survives. The hybrid approach gives me both flexibility in creation and durability in output.

The Results: Waiting for Google

As of two days ago, Google has crawled 1,500 pages but hasn’t indexed them yet. The “Discovered – currently not indexed” status means Google is evaluating quality before committing to search results.

With a 20+ year domain, proper SEO on every page, and clean HTML, I expect:

  • Full indexing within 2-3 weeks
  • Organic traffic significant increase within 60 days
  • Better rankings due to speed improvements

For Anyone Considering This Setup

You should do this if:

  • You have 500+ posts accumulated over years
  • Your SEO is inconsistent or nonexistent
  • You want speed without sacrificing your familiar CMS
  • You’re comfortable with Git and build processes
  • You value organization over just constant publishing

You should stay purely WordPress if:

  • You need comments, forums, or user-generated content
  • Non-technical team members need to manage the site
  • Your site is simple enough that optimization isn’t overwhelming

The hardest part isn’t the tech—it’s the systematic curation. Writing 1,800 unique meta descriptions takes discipline. But it’s also the most valuable SEO work you’ll ever do.

What’s Next

The blog is live. The SEO is systematically optimized. Now I wait for Google to catch up.

Beyond that: I’m building addTaskManager (iOS productivity app for ADHD minds)

Previous Next