Strategy & Planning

Tech Stack: Current vs. Recommended

The current learn.apmex.com is built on WordPress + Elementor, a page-builder stack that limits filtering, structured data, and content reuse. Below is a side-by-side comparison with our recommended headless rebuild and the rationale behind every layer change.

4
Current stack blockers
0
Native faceted filters (current)
MIT
All proposed tool licenses
3
Proprietary deps eliminated
Stack comparison
Current learn.apmex.com today
CMS
WordPress 6.4.4
Monolithic PHP CMS. Content is stored as post meta, not structured data.
Couples content to presentation
Page builder
Elementor Pro
Paid plugin. Drag-and-drop layout stored as shortcodes in post content - not queryable, not filterable, not portable.
Paid license No structured data
Dynamic fields
JetEngine
Paid plugin for custom post types and meta. Adds filtering capability, but only within WordPress and with performance trade-offs.
Paid license Plugin dependency chain
Search
WordPress default search
Full-text search only. No facets, no type-ahead, no relevance tuning. Users must scroll or know exact keywords.
No faceted search
CDN / Edge
Fastly + Cloudflare
Fastly for origin caching, Cloudflare for bot management and DDoS. Bot rules block all crawlers (returns 403).
Good coverage Blocks legitimate crawlers
SEO / Schema
Yoast SEO (inferred)
Plugin-based schema. Limited Article and FAQ schema. No structured product or price schema for precious metals content.
Thin schema coverage
Deployment
Managed WordPress hosting
Traditional server-rendered PHP. PHP build time on each request. Cache invalidation is manual.
Slower page delivery
Recommended Proposed rebuild
CMS
Sanity (headless)
Content stored as structured documents in a dedicated content lake. Schema is code - every field is typed, queryable, and portable.
Structured content Free tier available
Front end
Next.js or Astro
Static site generation with incremental regeneration. Pages are pre-built HTML served from edge CDN. Zero PHP runtime on requests.
MIT licensed Edge-native delivery
Dynamic fields
Sanity schema (built-in)
No plugin needed. Content types (article, video, Q&A, tool) are defined in the Sanity schema and available as typed API responses.
No paid plugins
Search
Algolia
Dedicated search-as-a-service. Real faceted filtering by metal type, content type, difficulty, and tags. Sub-100ms results with typo tolerance.
Real facets Type-ahead Paid above free tier
CDN / Edge
Vercel Edge or Cloudflare Pages
Static assets served from 300+ edge locations. Bot rules reconfigured to allow legitimate crawlers (Googlebot, Bingbot) while blocking bad actors.
Global edge delivery Crawler-friendly config
SEO / Schema
JSON-LD (native)
Article, FAQPage, HowTo, BreadcrumbList, and SpecialAnnouncement schema generated from Sanity content at build time. No plugin required.
Full schema coverage AI-ready markup
Deployment
CI/CD via GitHub Actions
Push to main triggers build. Static HTML deployed to edge in under 2 minutes. Rollback is one click. Preview deployments for every PR.
Automated pipeline Preview URLs
What changes and why
Layer Current pain Proposed fix Impact
Content model Post meta + Elementor shortcodes - no queryable schema Sanity typed documents - every field is an API endpoint Enables filtering, related content, AI schema
Filtering No native facets - JetEngine workaround with perf cost Algolia faceted search with real-time results Highest-impact UX addition on the rebuild
Page delivery PHP render on every request Pre-built HTML from edge CDN Sub-100ms TTFB vs 800ms+ current
Plugin cost Elementor Pro + JetEngine annual licenses No paid build-layer plugins License cost eliminated
SEO schema Thin schema via Yoast - no precious-metals types JSON-LD generated from content schema at build time Rich results eligibility in Google Search
Crawler access Cloudflare Bot Mgmt blocks all crawlers (returns 403) Allowlist Googlebot and Bingbot in firewall rules Critical - current setup blocks Google indexing
Deployment Manual FTP / admin dashboard deploys GitHub Actions CI/CD with preview URLs per PR Faster iteration, safer rollbacks
Content portability Content locked in WordPress database Sanity content lake with REST and GraphQL APIs Content reusable across web, app, and future AI agents
License and dependency audit

Every tool in the recommended stack is either MIT-licensed open source, has a free tier that covers the Knowledge Center's traffic level, or is a standard paid SaaS with no hidden dependency chain. No proprietary page-builder lock-in.

Tool Layer License Free tier Notes
Next.js Front end MIT Open source No runtime cost. Deploy to Vercel or any host.
Astro Front end (alt) MIT Open source Zero-JS by default. Excellent for content-heavy sites.
Sanity CMS Content lake Free tier Up to 3 users, 10 datasets, 20 GB bandwidth Studio UI is MIT. API is SaaS - paid above free tier limits.
Algolia Search Free tier 10,000 search requests/month, 1M records Free tier covers low-traffic launch. Paid plans scale cleanly.
JSON-LD (native) SEO schema MIT n/a - code standard W3C standard. No library needed - plain script tags in HTML.
GitHub Actions CI/CD Free tier 2,000 minutes/month on public repos Sufficient for content-site build cadence.
Cloudflare Pages Hosting Free tier Unlimited requests, 500 builds/month Alternative to Vercel. No egress cost.
Why this matters for APMEX
The Cloudflare crawler block is the most urgent issue

The current bot management configuration returns HTTP 403 to all automated crawlers - including Googlebot. This means pages on learn.apmex.com that are not already indexed cannot be crawled. Any new articles published since the bot rule was added may not appear in Google Search at all. Correcting the allowlist rule is a quick configuration change that should happen before any other rebuild work.

Risk: Elementor content migration
~200 existing articles are stored as Elementor shortcode blocks. Migration to Sanity requires a one-time conversion pass. The content itself is fine - the wrapper format is what needs to change. We would budget 2-3 weeks for this migration with tooling to automate the bulk of it.
Risk: Algolia index build time
Algolia needs an initial index build from the existing content. This is a one-time operation during launch that takes 30-60 minutes for ~200 articles. Ongoing indexing is event-driven via Sanity webhooks.
Upside: URL stability
Existing URLs (e.g. learn.apmex.com/articles/...) can be preserved exactly during the rebuild using Next.js dynamic routes or redirects. Zero SEO equity is lost from the URL migration.
Upside: AI-ready schema
Structured JSON-LD from Sanity makes APMEX content eligible for Google's AI Overviews and rich snippet features. Precious metals Q&A content is a strong candidate for FAQ rich results, which appear above organic links.