# Website Migration & International Expansion Plan (2026–2027)

**Last Updated:** 2026-03-16  
**Audience:** CEO, Founder, CTO, Leadership Team  
**Purpose:** Strategic plan for full website migration to a modern stack and coordination with international expansion.

> **Notion tip:** After pasting, select each `##` heading → click `⋯` → "Turn into toggle" to make sections collapsible and scannable.

---

## 📋 Executive Summary

Migrate the Ordio website from the current PHP-based setup to a clean Next.js 16 stack in a new repository, with updated branding, components, and architecture. **Accelerated timeline: ~14–20 weeks** (down from ~40 weeks) through aggressive automation, parallel work, and deferring non-critical systems.

### Key Accelerators
- **Automation:** Script comparison pages (62 → 1 week) and blog posts (350 → 1 week)
- **Parallel work:** Setup + core pages simultaneously; tools in batches
- **Deferrals:** Product Updates CMS, Ordio Loop stay on PHP (saves 8+ weeks)
- **Proxy vs Port:** ShiftOps, Excel generator, tool exports proxy to PHP (saves 4+ weeks)
- **AI acceleration:** Component generation, logic conversion, schema/meta automation

Run international expansion (localization, waitlist, new markets) in parallel with migration, phased by language priority and content channel.

---

## 💡 1. Why Migrate Now

### Current State
- **~211 PHP pages** across 10+ page types
- **~350 blog posts** (JSON-driven, migrated from WordPress)
- **~62 comparison pages**, **~22 tools**, **~13 templates**, **~4 downloads**
- Accumulated technical debt, legacy redirects, and outdated patterns
- Rebranding in progress; migration is an opportunity to apply it consistently

### Benefits of a Clean Migration
- **Modern stack:** Next.js 16, React 19, Turbopack, Server Components
- **Better performance:** Core Web Vitals, faster builds, edge-ready
- **Clean architecture:** No legacy patterns, consistent design system
- **i18n-ready:** Built-in support for international expansion
- **AI/automation:** Cursor and AI can accelerate development significantly

---

## ⚙️ 2. Recommended Tech Stack (2026)

### Core Framework: **Next.js 16**
- **App Router** – Server Components by default, optimal for content-heavy pages
- **Turbopack** – Stable, fast builds and HMR
- **Partial Prerendering (PPR)** – Static shells with dynamic streaming for tools/calculators
- **Cache Components** – Explicit caching for SEO and performance
- **React 19** – Built-in support, transitions, improved rendering

### Internationalization: **next-intl**
- Purpose-built for Next.js App Router
- Server Components support, no client bundle bloat
- ~2KB bundle size

### Styling: **Tailwind CSS**
- Already in `ordio-website-next` (Tailwind v4)
- Design tokens for rebranding consistency

### Deployment
- **Vercel** (recommended for Next.js) or **AWS/Cloudflare** if preferred
- Edge functions for API routes, redirects, and middleware

### Why Not Alternatives
- **Remix:** Smaller ecosystem; Next.js has stronger SEO and i18n tooling
- **Astro:** Better for pure content sites; Ordio has interactive tools, calculators, and APIs
- **SvelteKit:** Smaller talent pool; React ecosystem is larger for hiring and AI assistance

---

## 🎯 3. Migration Priority Matrix

| Phase | Page Type | Count | Effort | Priority | Notes |
|-------|-----------|-------|--------|----------|-------|
| **1** | Homepage | 1 | Low | Critical | Entry point, rebranding showcase |
| **1** | Product pages | 8 | Low | Critical | Schichtplan, Zeiterfassung, Payroll, etc. |
| **1** | **Paid Landing Pages** | **4+** | **Low** | **Critical** | **/gastro, /schichtbetriebe, /kostenlos-testen, /kostenlos-testen/los-gehts** - High-converting campaign pages with dynamic variations |
| **1** | Industry (Branchen) | 5 | Low | High | Gastronomie, Einzelhandel, Pflege, etc. |
| **1** | Static (Pricing, Legal, Company) | 12 | Low | High | Preise, Datenschutz, Impressum, AGB, etc. |
| **2** | Comparison pages | 62 | **Low** | High | **Scripted/AI:** All 62 from JSON in bulk (1 week) |
| **2** | Pillar pages | 2 | Low | High | /insights/dienstplan, /insights/zeiterfassung |
| **2** | Download pages | 4 | Medium | Medium | HubSpot forms, gated content |
| **2** | Webinar pages | 3 | Low | Medium | Event schema, registration |
| **3** | Blog posts | ~350 | **Low** | High | **Scripted/AI:** All 350 from JSON in bulk (1 week) |
| **3** | Blog index | 1 | Low | High | Category filtering, search |
| **4** | Tools/Calculators | 22 | High | High | **Parallel batches:** 5–6 per week; AI conversion |
| **4** | ShiftOps | 1 | **Low** | High | **Proxy to PHP:** No porting (1–2 days) |
| **5** | Templates pages | 13 | Medium | Medium | Frontend only; Excel API stays PHP |
| **5** | Product Updates | 3 | Medium | Medium | **Migrate as static:** JSON → React components; custom styling |
| **DEFER** | Product Updates Admin | 1 | — | Low | **Keep on PHP:** Use Cursor/AI to edit JSON directly |
| **DEFER** | Ordio Loop (Partner) | 10+ | — | Low | **Keep on PHP subdomain:** Defer entirely |

---

## 📅 4. Phased Migration Timeline (Accelerated: ~20 Weeks)

### Parallel Tracks Overview

**Visual Summary:**

```mermaid
timeline
    title Migration & International Expansion Parallel Execution
    
    Week 1-3 : Migration: Setup & Core Pages
              : Intl: UK Foundation (hreflang, waitlist)
              : Intl: UK Core Pages Translation Starts
    
    Week 4-6 : Migration: Comparison & Bulk Content
              : Intl: UK Core Pages Complete
              : Intl: UK Blog Top 20 Starts
              : Intl: NL Foundation Starts
    
    Week 7-8 : Migration: Blog Migration (350 posts)
              : Intl: UK Blog Top 20 Complete
              : Intl: UK Tools Generic Starts
              : Intl: NL Core Pages Translation
    
    Week 9-10 : Migration: Tools Batch 1
               : 🔄 Convergence: UK Content → Next.js
               : Intl: NL Blog Top 20 Starts
    
    Week 11-12 : Migration: Tools Batch 2 + ShiftOps
                : 🔄 Convergence: NL Content → Next.js
                : Intl: NL Blog Complete
    
    Week 13-14 : Migration: Templates + Product Updates
                : Migration: Full Site Launch ✅
                : Intl: UK/NL Content on Next.js
    
    Week 15+ : Migration: Complete ✅
              : Intl: UK Complete (70 posts)
              : Intl: NL Complete (70 posts)
              : Intl: FR Foundation Starts
```

### Detailed Parallel Tracks

```mermaid
gantt
    title Migration & International Expansion Parallel Tracks
    dateFormat YYYY-MM-DD
    section Migration Track
    Setup & Foundation           :a1, 2026-04-01, 1w
    Core Pages (Homepage, Product, Paid LP) :a2, after a1, 1w
    Static Pages                 :a3, after a2, 1w
    Phase 1 Launch               :milestone, m1, after a3, 0d
    Comparison Pages (62)         :a4, after m1, 1w
    Pillar, Downloads, Webinars  :a5, after a4, 1w
    Phase 2 Launch               :milestone, m2, after a5, 0d
    Blog Migration (350 posts)   :a6, after m2, 1w
    Blog QA & Optimization       :a7, after a6, 1w
    Phase 3 Launch               :milestone, m3, after a7, 0d
    Tools Batch 1 (6 tools)      :a8, after m3, 2w
    Tools Batch 2 + ShiftOps     :a9, after a8, 1w
    Tools QA                     :a10, after a9, 1w
    Phase 4 Launch               :milestone, m4, after a10, 0d
    Templates + Product Updates   :a11, after m4, 1w
    Final QA & Launch            :a12, after a11, 1w
    Full Site Live               :milestone, m5, after a12, 0d
    
    section International Expansion Track
    UK Foundation (hreflang, waitlist) :b1, 2026-04-01, 1w
    UK Core Pages Translation    :b2, after b1, 2w
    UK Blog Top 20 Lexikon        :b3, after b2, 2w
    UK Tools (Generic)           :b4, after b3, 2w
    NL Foundation                :b5, after b2, 1w
    NL Core Pages Translation    :b6, after b5, 2w
    NL Blog Top 20               :b7, after b6, 2w
    Migrate UK Content to Next.js :b8, after m3, 1w
    Migrate NL Content to Next.js :b9, after m3, 1w
    UK Complete (70 posts)       :b10, after m5, 4w
    NL Complete (70 posts)       :b11, after m5, 4w
    FR Foundation                :b12, after m5, 1w
    FR Core Pages                :b13, after b12, 2w
```

### Convergence Points

```mermaid
flowchart TD
    Start([Start: Week 1]) --> Migration[Migration Track]
    Start --> Intl[International Expansion Track]
    
    Migration --> |Week 1-3| Phase1[Phase 1: Foundation<br/>Homepage, Product, Paid LP, Static]
    Intl --> |Week 1-2| UKFound[UK Foundation<br/>hreflang, waitlist, locale config]
    
    Phase1 --> |Week 3| Launch1[Phase 1 Launch]
    UKFound --> |Week 3-4| UKCore[UK Core Pages<br/>Homepage, Product, Paid LP]
    
    Launch1 --> |Week 4-6| Phase2[Phase 2: Bulk Content<br/>Comparison, Pillar, Downloads]
    UKCore --> |Week 5-6| UKBlog[UK Blog Top 20<br/>Lexikon + Ratgeber]
    
    Phase2 --> |Week 6| Launch2[Phase 2 Launch]
    UKBlog --> |Week 7-8| UKTools[UK Tools Generic]
    
    Launch2 --> |Week 7-8| Phase3[Phase 3: Blog<br/>350 posts migration]
    UKTools --> |Week 8| UKPHP[UK Content Live<br/>on PHP Site]
    
    Phase3 --> |Week 8| Launch3[Phase 3 Launch<br/>Next.js i18n Ready]
    UKPHP --> |Week 9| Converge1[🔄 Convergence Point 1<br/>Migrate UK Content<br/>to Next.js]
    
    Launch3 --> Converge1
    Converge1 --> |Week 9-10| Phase4[Phase 4: Tools & ShiftOps]
    
    UKPHP --> |Week 5| NLFound[NL Foundation]
    NLFound --> |Week 6-7| NLCore[NL Core Pages]
    NLCore --> |Week 8-9| NLBlog[NL Blog Top 20]
    NLBlog --> |Week 10| NLPHP[NL Content Live<br/>on PHP Site]
    
    NLPHP --> |Week 11| Converge2[🔄 Convergence Point 2<br/>Migrate NL Content<br/>to Next.js]
    Phase4 --> Converge2
    
    Converge2 --> |Week 11-12| Phase4Cont[Phase 4 Continue]
    Phase4Cont --> |Week 12| Launch4[Phase 4 Launch]
    
    Launch4 --> |Week 13-14| Phase5[Phase 5: Templates<br/>& Product Updates]
    Phase5 --> |Week 14| Launch5[Full Site Live<br/>Migration Complete]
    
    Launch5 --> |Week 15+| UKComplete[UK Complete<br/>70 posts, tools, comparisons]
    Launch5 --> |Week 15+| NLComplete[NL Complete<br/>70 posts, tools, comparisons]
    Launch5 --> |Week 15+| FRStart[FR Foundation<br/>& Core Pages]
    
    UKComplete --> Ongoing[Ongoing Localization<br/>Market-specific content]
    NLComplete --> Ongoing
    FRStart --> Ongoing
    
    style Converge1 fill:#ffd700,stroke:#ff8c00,stroke-width:3px
    style Converge2 fill:#ffd700,stroke:#ff8c00,stroke-width:3px
    style Launch5 fill:#90ee90,stroke:#228b22,stroke-width:3px
    style UKPHP fill:#87ceeb,stroke:#4682b4,stroke-width:2px
    style NLPHP fill:#87ceeb,stroke:#4682b4,stroke-width:2px
```

### Key Convergence Points

1. **Week 9 (Convergence Point 1):** UK content migrates from PHP to Next.js
   - Next.js i18n infrastructure ready (Phase 3 launch)
   - UK core pages + top 20 blog posts translated and live on PHP
   - Migrate to Next.js with `next-intl` routing

2. **Week 11 (Convergence Point 2):** NL content migrates to Next.js
   - NL core pages + top 20 blog posts translated and live on PHP
   - Migrate to Next.js alongside tools migration

3. **Week 14 (Full Convergence):** Migration complete, international expansion continues
   - All critical pages migrated
   - UK and NL content fully on Next.js
   - International expansion continues post-migration (FR start, UK/NL completion)

### Phase 1: Foundation (Weeks 1–3)
**Goal:** New repo, design system, core pages live

- **Week 1:** Setup + Core pages (parallel)
  - New Next.js 16 repo (or evolve `ordio-website-next`)
  - Design tokens, rebranded components (AI-assisted)
  - Base layout (header, footer, CTAs)
  - **Simultaneously:** Homepage + Product pages (8) + **Paid Landing Pages (4+)** + Industry pages (5)
  - **Paid Landing Pages:** `/gastro`, `/schichtbetriebe`, `/kostenlos-testen`, `/kostenlos-testen/los-gehts`
  - **Preserve:** Dynamic content variations (`lp_*` parameters) for Google Ads campaigns
  - Redirect strategy (301 mapping, QSA for UTM/partner params)
- **Week 2:** Static pages + Launch prep
  - Static pages (12): Pricing, Legal, Company
  - Deploy to staging
  - Redirect old URLs → new
- **Week 3:** QA + Launch Phase 1
  - Performance, schema validation
  - Go live with Phase 1 pages

### Phase 2: Bulk Content (Weeks 4–6)
**Goal:** Comparison pages, pillar pages, downloads, webinars (parallel)

- **Week 4:** Comparison pages (automated)
  - Single dynamic route: `/alternativen/[slug]`
  - **Script/AI:** Generate all 62 pages from competitor JSON in bulk
  - Competitor data JSON → React components (automated conversion)
- **Week 5:** Pillar + Downloads + Webinars (parallel)
  - Pillar pages (2): `/insights/dienstplan`, `/insights/zeiterfassung`
  - Download pages (4): HubSpot forms, gated content
  - Webinar pages (3): Event schema, registration
- **Week 6:** QA + Redirects
  - Schema validation, redirect mapping
  - Deploy Phase 2

### Phase 3: Blog (Weeks 7–8)
**Goal:** Blog migration (automated)

- **Week 7:** Blog infrastructure + automated conversion
  - `/blog`, `/blog/[category]`, `/blog/[category]/[slug]` routes
  - **Script/AI:** Convert all ~350 JSON posts → React components in bulk
  - Preserve existing structure, schema, internal links
- **Week 8:** QA + Optimization
  - Internal links validation
  - Sitemap generation
  - Performance optimization
  - Deploy Phase 3

### Phase 4: Tools & ShiftOps (Weeks 9–12)
**Goal:** Calculators, ShiftOps (parallel batches)

- **Week 9–10:** Tools batch 1 (parallel)
  - Migrate 5–6 tools per week in parallel
  - Rebuild logic in React/TypeScript (AI-assisted)
  - Preserve export (Excel/PDF) behavior
  - Tools: Brutto-Netto, Urlaubsanspruch, Zuschlagsrechner, TVöD-SuE, Arbeitszeitrechner, Stundenlohnrechner
- **Week 11:** Tools batch 2 + ShiftOps proxy
  - Remaining tools (16): Arbeitstage, PayPal, Zinseszins, Midijob, Kostenrechner, etc.
  - **ShiftOps:** Proxy to existing PHP API (no porting)
  - Next.js API route → PHP API endpoint
- **Week 12:** QA + Performance
  - Tools testing, export validation
  - ShiftOps proxy testing
  - Performance optimization
  - Deploy Phase 4

### Phase 5: Templates & Product Updates (Weeks 13–14)
**Goal:** Templates frontend, Product Updates static pages, final polish

- **Week 13:** Templates frontend + Product Updates
  - Templates: `/vorlagen`, `/vorlagen/[slug]` routes
  - **Keep PHP API:** Excel generator stays on PHP; Next.js calls via API
  - **Product Updates:** Migrate as static pages (like blog posts)
    - `/produkt-updates`, `/produkt-updates/[month-slug]`, `/produkt-updates/[post-slug]`
    - Convert JSON data (`v2/data/produkt_updates.json`) → React components
    - Custom styling/setup for Product Updates pages (distinct from blog)
    - **No CMS initially:** Use Cursor/AI to create new updates; evaluate CMS later if needed
    - Preserve existing structure: Features, Improvements, Month organization
- **Week 14:** Final QA + Launch
  - Full site QA
  - Redirect validation (GSC)
  - Performance audit
  - Schema validation
  - **Go live**

### Deferred (Post-Migration or Separate Track)
- **Product Updates Admin Panel:** Keep on PHP; use Cursor/AI to edit JSON directly
- **Ordio Loop:** Keep on PHP subdomain (`partner.ordio.com`); migrate separately if needed

---

## 🌍 5. International Expansion: Parallel Track

### Principle
**Start localization immediately, in parallel with migration.** Do not wait for migration completion. Foundation already exists: locale config, waitlist API, hreflang implementation, and traffic analysis are complete. Execute phased localization by language priority and content channel.

### Current State (Pre-Migration)

**Target Markets (Prioritized):**
1. **United Kingdom/Ireland** (Priority 1, Score: 8.7/10)
   - Traffic: 101 clicks, 48,301 impressions (highest), 0.21% CTR
   - Opportunity: CTR could improve to 0.5–0.7% = 240–340 clicks/month potential (138–238% increase)
   - Keywords: 1,430 primary volume, ~2,780 total, £15.80 avg CPC
   - Language: English (en-GB, en-IE)

2. **Netherlands** (Priority 2, Score: 8.2/10)
   - Traffic: 154 clicks (highest non-DACH), 20,758 impressions, 0.74% CTR (strong engagement)
   - Best product-market fit: Highest clicks despite lower impressions
   - Keywords: 600 primary volume, ~2,440 total, €23.50 avg CPC (high commercial intent)
   - Language: Dutch (nl-NL)

3. **France** (Priority 3, Score: 6.5/10)
   - Traffic: 131 clicks, 12,708 impressions, 1.03% CTR (highest CTR = strongest intent)
   - Opportunity: CTR could reach 1.2–1.5% = 152–190 clicks/month (16–45% increase)
   - Keywords: 40 primary volume (data limited), €15.20 avg CPC
   - Language: French (fr-FR)

4. **Austria** (Priority 4) – Same language (de-AT), different compliance
5. **Switzerland** (Priority 5) – Same language (de-CH), different compliance

**Already Implemented:**
- ✅ Locale config (`v2/config/locale-config.php`) with `is_pre_launch` flag
- ✅ Waitlist API (`v2/api/waitlist-signup.php`) + HubSpot integration
- ✅ Waitlist form component (`v2/components/waitlist-form.php`)
- ✅ Hreflang implementation (`v2/base/include_hreflang.php`)
- ✅ CTA conditional logic (waitlist vs demo based on `is_pre_launch_market()`)
- ✅ Traffic analysis script (`fetch-international-traffic-data.php`)
- ✅ GSC/GA4 data: 90-day analysis complete (2.1% non-DACH traffic = opportunity)

### Parallel Execution Strategy

#### Phase A: Pre-Migration Localization (Weeks 1–8) — Start Now

**Language Priority: UK/Ireland First (en-GB)**

**Week 1–2: Foundation**
- Set `is_pre_launch: true` for `en-GB` in locale config
- Add hreflang tags for `en-GB` (even if content is DE-only initially)
- Enable waitlist form for UK traffic
- Port waitlist API to Next.js (if migration started) or keep on PHP

**Week 3–4: Core Pages Translation**
- **Homepage:** Translate hero, value props, CTAs
- **Product pages (8):** Schichtplan, Zeiterfassung, Payroll, etc.
- **Paid landing pages:** `/gastro`, `/schichtbetriebe` → `/en/gastro`, `/en/schichtbetriebe`
- **Static pages:** Pricing, Company (legal pages can wait)

**Week 5–6: Blog Content (Top Performers)**
- **Translate top 20 Lexikon posts** (by traffic/engagement from GA4/GSC)
- **Translate top 10 Ratgeber posts**
- Process: AI translation + native review + cultural adaptation
- Publish on PHP site first (`/en/blog/...`); migrate to Next.js later

**Week 7–8: Tools & Templates**
- **Generic tools first:** ROI calculator, work hours calculator (not Germany-specific)
- **Defer:** Country-specific calculators (Minijob, Elterngeld) until product supports UK
- **Templates:** Translate 2–3 most popular (Dienstplan, Stundenzettel)

**Parallel: Netherlands (nl-NL) — Start Week 5**
- Repeat same pattern: Foundation → Core pages → Blog top performers
- Leverage UK translations where applicable (EN → NL is easier than DE → NL)

#### Phase B: During Migration (Weeks 9–14)

**i18n Infrastructure:**
- Use `next-intl` with `[locale]` routing from day one
- **Default locale:** `de` (Germany)
- **URL structure:** `ordio.com` (default), `ordio.com/en/`, `ordio.com/nl/`
- **Port existing infrastructure:**
  - Waitlist API → Next.js API route (keep HubSpot integration)
  - Locale config → `next-intl` config
  - Hreflang → `next-intl` middleware
  - CTA conditional logic → React components with locale detection

**Content Migration:**
- Migrate translated content from PHP to Next.js
- Continue translating new content in parallel (don't stop for migration)
- **UK:** Complete core pages + top 30 blog posts by Week 12
- **Netherlands:** Complete core pages + top 20 blog posts by Week 14

#### Phase C: Post-Migration Expansion (Weeks 15+)

**UK/Ireland (en-GB) — Complete**
- **Blog:** Translate remaining top 50 Lexikon + top 20 Ratgeber (total 70 posts)
- **Market-specific net-new:** Create 10–15 EN posts (local labor law, UK compliance)
- **Comparison pages:** Translate top 10–15 (competitor set differs by market)
- **Tools:** Add UK-specific calculators as product supports

**Netherlands (nl-NL) — Expand**
- **Blog:** Complete top 50 Lexikon + top 20 Ratgeber
- **Market-specific net-new:** Create 10–15 NL posts
- **Comparison pages:** Translate top 10–15

**France (fr-FR) — Start**
- **Foundation:** Set `is_pre_launch: true`, hreflang, waitlist
- **Core pages:** Homepage, product pages, paid landing pages
- **Blog:** Translate top 20 Lexikon + top 10 Ratgeber
- **Defer:** Tools and comparison pages (lower priority)

**Content Channel Priority (Per Language):**
1. **Core pages** (homepage, product, paid landing) — Highest ROI
2. **Top blog posts** (20–30 Lexikon + 10–20 Ratgeber) — SEO traffic
3. **Market-specific net-new** (10–15 posts) — Local keywords
4. **Tools** (generic first, country-specific later) — Engagement
5. **Comparison pages** (top 10–15 only) — Lower priority

### What to Avoid
- Waiting for migration completion before starting localization
- Translating all 350 blog posts immediately (focus on top performers)
- Building complex multi-locale content in PHP (use Next.js i18n from start)
- Blocking migration progress for localization work

---

## 🔀 6. Redirect & SEO Strategy

### Redirect Rules
- **301 permanent** for all moved URLs
- **QSA (Query String Append)** for UTM, partner, and campaign params
- **1:1 mapping** where possible; avoid redirect chains
- **Canonical URLs** on new site match redirect targets

### Pre-Migration (6–8 Weeks Before)
- Crawl full site (e.g. Screaming Frog)
- Build redirect mapping: old URL → new URL
- Identify high-value pages (traffic, backlinks, rankings)
- Document current schema and meta

### Post-Migration
- Resubmit sitemaps to GSC and Bing
- Monitor index coverage and crawl errors
- Expect 10–20% temporary traffic dip; recovery in 2–4 weeks with proper redirects

---

## 🔧 7. Complex Systems: Migration Options

### ShiftOps
- **Current:** PHP API, Google Places, industry benchmarks, scoring, customer matching
- **Decision:** **Always proxy** (no porting)
  - Next.js API route → PHP API endpoint
  - Zero behavior change, fastest migration
  - Can port later if needed (separate project)
- **Implementation:** 1–2 days vs 2 weeks for porting

### Tools/Calculators
- **Current:** Alpine.js, PHP, various export logic
- **Migration:** Rebuild in React; **parallel batches** (5–6 tools per week)
- **AI acceleration:** Convert Alpine.js logic → React components automatically
- **Export:** Keep PHP endpoints (no porting); Next.js calls PHP API for exports

### Paid Landing Pages
- **Current:** `/gastro`, `/schichtbetriebe`, `/kostenlos-testen`, `/kostenlos-testen/los-gehts`
- **Features:** Dynamic content variations via `lp_*` URL parameters (Google Ads campaigns)
- **Migration:** Migrate in **Phase 1** (top priority - high-converting campaign pages)
  - Preserve dynamic parameter handling (`lp_h1`, `lp_h1_sub`, `lp_title`, `lp_desc`, `lp_subhead`, `lp_body`, `lp_bullet1-3`)
  - Maintain SEO behavior: canonical URLs, `noindex, follow` when params present
  - Preserve QSA (Query String Append) for UTM + `lp_*` parameters
  - Routes: `/gastro`, `/schichtbetriebe`, `/kostenlos-testen`, `/kostenlos-testen/los-gehts`
- **Critical:** These pages drive paid campaign conversions; must migrate early to avoid campaign disruption

### Product Updates
- **Current:** JSON-driven (`v2/data/produkt_updates.json`), admin panel, public pages
- **Migration:** Migrate public pages as **static pages** (like blog posts)
  - Convert JSON → React components
  - Custom styling/setup for Product Updates (distinct from blog)
  - Routes: `/produkt-updates`, `/produkt-updates/[month-slug]`, `/produkt-updates/[post-slug]`
  - Preserve structure: Features, Improvements, Month organization
- **Admin Panel:** Keep on PHP initially; use Cursor/AI to edit JSON directly
- **Future:** Evaluate CMS (headless or custom) later if needed; Cursor may be sufficient

### Ordio Loop (Partner Program)
- **Current:** Auth, HubSpot sync, dashboard, resources, earnings
- **Decision:** **Keep on PHP subdomain** (`partner.ordio.com`)
- Migrate separately if needed; not blocking main migration
- Saves 6–8 weeks from main timeline

### Excel Template Generator
- **Current:** PhpSpreadsheet, template registry, CLI
- **Decision:** **Keep PHP API** (no porting)
- Next.js frontend calls PHP API for Excel generation
- Frontend migration only; saves 2–3 weeks

---

## 🤖 8. AI & Automation Acceleration

### Aggressive Automation Strategy
- **Comparison pages:** Script generates all 62 pages from competitor JSON in one batch (1 day vs 4 weeks)
- **Blog migration:** Automated script converts all ~350 JSON posts → React components (2–3 days vs 4 weeks)
- **Component creation:** AI generates design system components from specs and existing PHP patterns
- **Schema/meta:** Automated generation from templates and data
- **Redirect mapping:** Script outputs redirect config from sitemap/crawl data
- **Tools migration:** AI converts Alpine.js logic → React components; batch process multiple tools in parallel

### Recommended Workflow
- Use Cursor with Claude Sonnet 4 or latest premium model
- Provide `@Files` and `@Code` references instead of pasting large files
- **Batch operations:** Process multiple pages/components simultaneously
- **Script-first approach:** Write conversion scripts before manual migration
- Plan before editing; use rule files (`.cursor/rules/`) for consistency
- Run validation (`make validate`, schema tests) after each phase

### Time Savings Breakdown
- **Without AI/Automation:** ~40 weeks
- **With AI + Automation:** ~14–20 weeks (50–65% reduction)
  - Comparison pages: 4 weeks → 1 week (scripted)
  - Blog: 4 weeks → 1 week (scripted)
  - Tools: 6 weeks → 4 weeks (parallel batches + AI)
  - Setup: 2 weeks → 1 week (parallel work)

---

## ⚠️ 9. Risks & Mitigations

| Risk | Mitigation |
|------|------------|
| SEO traffic loss | 301 redirects, 1:1 mapping, GSC monitoring |
| Broken partner attribution | QSA on redirects; test UTM/partner params |
| ShiftOps downtime | Proxy to PHP; no behavior change during migration |
| **Paid campaign disruption** | **Migrate paid landing pages in Phase 1; preserve `lp_*` parameter handling; test variations before launch** |
| Scope creep | **Aggressive deferral:** Product Updates admin, Ordio Loop stay on PHP; Product Updates public pages migrate as static |
| International complexity | i18n from start; content in DE first; add locales incrementally |
| Automation failures | Manual fallback for scripted conversions; QA each batch |
| Parallel work conflicts | Clear ownership, daily sync, staged deployments |

---

## ✅ 10. Success Criteria

- [ ] All critical pages migrated with 1:1 or proper redirects
- [ ] Core Web Vitals: LCP < 2.5s, CLS < 0.1, FID < 100ms
- [ ] Schema validates (Google Rich Results Test)
- [ ] No increase in 404s; redirect mapping complete
- [ ] Partner/UTM params preserved through redirects
- [ ] i18n foundation in place for international expansion
- [ ] Rebranding applied consistently across new site

---

## 🚀 11. Next Steps

1. **Approve plan** – Leadership sign-off on accelerated timeline (~20 weeks)
2. **Assign owner** – CTO or lead dev for migration
3. **Kick off Phase 1** – New repo, design system, first pages (parallel work from day 1)
4. **International track** – Run locale config, waitlist, hreflang in parallel
5. **Set up automation** – Script comparison pages and blog conversion before Phase 2/3
6. **Review after Phase 1** – Adjust timeline based on velocity; aim for 14–16 weeks if possible

---

## 📊 Appendix: Page Counts (Reference)

| Type | Count | Source |
|------|-------|--------|
| Comparison | 62 | v2/pages/compare_*.php |
| Product | 8 core + 5 related | product_*.php |
| **Paid Landing** | **4+** | **paid_*.php, kostenlos-testen*.php** |
| Industry | 5 | industry_*.php |
| Tools | 22 | tools_*.php |
| Blog posts | ~350 | v2/data/blog/posts/*.json |
| Templates | 13 | template registry |
| Downloads | 4 | download_*.php |
| Static | 12 | pricing, legal, company |
| Webinars | 3 | webinar_*.php |
| Pillar | 2 | pillar_*.php |
| ShiftOps | 1 | shiftops-report.php |
| Product Updates | 3 public (migrate as static) + 1 admin (defer) | produkt_updates*.php |
| Ordio Loop | 10+ | partner-*.php |
