appfarms.com – from WordPress to Astro

In-house project · Web & Migration

About this project

This reference is an in-house project: the migration of our own website appfarms.com from a WordPress installation that had evolved over many years to a statically delivered Astro stack. We document the project openly – including the rough edges – for two reasons.

First, because we want to be measured by what we recommend to clients: a modern web that is fast, secure, maintainable and durable. Second, because the pain points that triggered our migration are the same in many companies – and a practical account of the work is worth more than any glossy bullet list.

Starting point: what no longer fit on WordPress

The old site ran reliably – but it kept demanding attention without delivering editorial benefit in return:

  • Plugin and core updates as a recurring maintenance task, with the risk of incompatibilities and breaking changes.
  • Security surface: PHP runtime, database, third-party plugin code and a public login – every element is a potential attack vector and requires patch discipline.
  • Performance: pre-built HTML and locally hosted fonts reduce the work needed to load a page. We use Lighthouse for technical checks; real loading times also depend on the device and connection.
  • Editor and page-builder fragmentation: content was partly in the block editor, partly in the page builder, partly in plugin custom fields. Structured content (case studies, FAQs) was hard to keep consistent.
  • Reproducibility: staging and local environments were laborious; database and media sync was a recurring source of friction.

None of this is an argument against WordPress in general. For our profile – a primarily editorial marketing and references site with a moderate change cadence – the ratio of complexity to benefit had simply become unfavourable.

Maintaining the previous website

A WordPress installation needs regular maintenance of its core, plugins, access controls and server configuration. For our mainly editorial website, we wanted to reduce that ongoing work. Static delivery removes the WordPress runtime from the public site; the web server, dependencies and security configuration still require maintenance.

Decision: why Astro

We seriously evaluated three options: modernising WordPress (clean-up, plugin reduction, headless frontend), a Hugo/Eleventy solution, and Astro. We chose Astro because, for our profile, it offers the best combination:

  • Static delivery – the web server serves pre-built files. There is no need for a PHP runtime, WordPress database or public CMS login.
  • Component model with TypeScript, without forced SSR and without framework lock-in. We can drop in React/Svelte islands when needed – but don’t have to.
  • Content collections with a Zod schema: content is validated at build time. A missing required field breaks the build instead of going live unnoticed.
  • Multilingual setup cleanly as a directory structure (de/, en/), not as a plugin.
  • SEO essentials (sitemap, JSON-LD, hreflang, canonical) live in code – versioned and reviewable, not in a plugin backend.

Migration path

  1. Content audit: every WordPress page evaluated (keep, rewrite, drop, merge). Result: significantly fewer but stronger pages.
  2. Content model before content: schema for pages, case studies and FAQs defined in content.config.ts before migrating content. That surfaced several inconsistencies from the old site.
  3. Markdown migration: content carried over as Markdown, images optimised, alt texts added.
  4. Redirects: removed pages get appropriate destinations. For example, the former training page redirects to About us.
  5. SEO building blocks: JSON-LD for organisation, breadcrumbs, FAQs and case studies; clean <title> and meta descriptions per page.
  6. Build and hosting: Astro generates static files, which Nginx serves. The server configuration and container setup are included in the project.

Results

What changed noticeably in practice:

  • Maintenance: no plugin updates, no PHP patches, no login hardening. Updates are limited to dependencies that are visible in PR review.
  • Performance: pre-built HTML and locally hosted fonts reduce the work needed to load a page. We use Lighthouse for technical checks; real loading times also depend on the device and connection.
  • Editorial workflow: a new reference or service equals a new Markdown file with a schema. Consistency is enforced by the system, not by discipline.
  • Security: WordPress runtime endpoints are no longer part of the site. HTTP security headers are configured separately in Nginx; static delivery does not provide them automatically.
  • Operations: the website needs neither a separate WordPress database nor a PHP runtime, simplifying the infrastructure.

Lessons learned – honestly

  • The content schema is the most important decision, not the framework. Whoever defines the data structure cleanly wins regardless of stack.
  • Content and URLs need their own planning. The technical framework is only one part of the migration.
  • Astro is not the right choice for every site. For highly dynamic, logged-in or heavily editorial scenarios, other stacks may fit better.
  • “No CMS” does not mean “no editorial process”. With a non-technical team, plan in a lightweight editor frontend – Astro keeps that option open.

What does this mean for your project?

If you run a website that primarily serves marketing, reference or product content, where security and performance are high priorities and maintenance effort has become noticeable, an Astro-based stack deserves an honest look. We support migrations like this – from content audit through schema design to an SEO-preserving go-live. Feel free to get in touch.

Challenge

The WordPress site had grown over the years: several active plugins for page building, SEO, caching, multilingual setup and security, a classic page builder, and a hosting setup that demanded attention with every core or plugin update. The consequences were familiar: security and compatibility patches on the watch list, fragile staging environments, additional performance work despite caching, and an editor that felt simultaneously too loose and too rigid for structured content (case studies, FAQs, services). On top of that: we recommend a modern web stack to clients – built for speed, security and longevity – and we wanted to live by exactly that recommendation.

Solution

We rebuilt the site with Astro. Content is stored as Markdown in content collections, with a Zod schema checking required fields and the structure of case studies and FAQs. German and English content is maintained separately. The build produces static HTML served by Nginx. The implementation includes a sitemap, canonical links, hreflang and structured data. Content and code are versioned together.

Outcome

The website is served without a WordPress runtime, PHP or a database. Content and technical changes can be versioned and reviewed together. A schema supports consistent case studies. Dependencies, the web server and hosting still need to be maintained.

“We wanted a website that no longer forced us into plugin updates and maintenance windows – but gave us back time for content and clients. For us, Astro was the most honest answer to that requirement.”

Translated from German.

appfarms teamIn-house project · 2025/2026

Frequently asked questions

Why move away from WordPress at all?

WordPress is a fine tool for many requirements – but no longer for our website. We had plugin sprawl, recurring security and compatibility updates, an editor that didn't enforce structured content, and a hosting setup that needed constant care. The benefit of that complexity was small for a primarily editorial site.

Why Astro and not Next.js, Hugo or a headless CMS?

Astro ships static HTML by default with a minimal JavaScript footprint – exactly what a marketing and references site needs. Compared to Hugo we valued the component model and TypeScript integration; compared to Next.js we did not want an SSR runtime or React overhead where it isn't needed. A headless CMS would have added another system – we wanted fewer systems, not more.

Where do you edit content now that there's no backend?

Content lives as Markdown files in the repository, validated via a schema (Zod). Changes happen via pull requests – with review, history and a deploy pipeline. For non-technical editors, a lightweight editor frontend (e.g. Decap CMS, Sveltia CMS) can be added on top at any time without changing the architecture.

What was challenging about the migration?

Three things: an honest content audit (what stays, what goes, what gets rewritten), a clean URL-level redirect map to preserve SEO, and the discipline to define the content schema before writing, instead of just copying old content over. The technology itself was the easiest part.

Do you now recommend every client to migrate away from WordPress?

No. WordPress remains a sensible choice for many scenarios – for example editorially heavy magazines with daily multi-author workflows. We recommend a switch when the site primarily serves marketing, reference or product content, security and performance are high priorities, and maintenance effort has become noticeable. For exactly that profile, Astro is a strong fit.