Endevo
From a 7,000-line hardcoded data file and zero per-page SEO — to a fully managed headless CMS, individual article indexing, and a content team that ships without touching code.
Endevo — Digital Legacy Platform
Blue Sprout Agency
Technical Audit + CMS Migration
Want the full technical deep-dive?
The complete story — audit process, architecture decisions, migration approach, and the SEO results — is published in our blog.
How It Happened
Technical Consultation — The Audit
Endevo came to us with a working site but a growing maintenance burden. Before opening a single file, we reviewed the architecture from the outside: how content was stored, how the frontend consumed it, and what Google actually saw at each URL. Two structural problems emerged immediately.
The Two Problems We Found
First: a TypeScript data file exceeding 7,000 lines containing all 58 blog posts hardcoded as a static array — unmaintainable and entirely locked to the development team for every content update. Second: the entire blog was being indexed as a single URL, with no per-page title tags, meta descriptions, or structured data. 58 articles, zero individual search impressions.
Architecture Decision — Sanity CMS
We evaluated the options: a PHP-backed CMS (wrong fit for the Vite/React stack), a custom API layer (unnecessary complexity), or a headless CMS. We chose Sanity.io — its schema lives in the codebase, versioned in git, with a web-based Studio that VAs and editors can use without touching a line of code.
Migration, SEO Infrastructure & Launch
We built a deduplication layer so Sanity posts and the existing static posts coexisted during migration — no URL went dark, no redirects broke. The 58 posts migrated programmatically. Per-page metadata was added via react-helmet-async. JSON-LD BlogPosting schema was implemented. Sitemap updated and submitted. Google began indexing individual article titles within days.
The Architecture Before We Started
Content storage
7,000+ line TypeScript array with all 58 posts hardcoded
Sanity CMS — each post a structured document in a cloud dataset
Publishing workflow
Developer writes code → PR → deployment → post live
Editor logs into Sanity Studio → writes → hits Publish → done
SEO per post
Homepage title tag repeating on every blog URL
Unique title, description, and OG tags per post via react-helmet-async
Google indexing
58 articles treated as one page — zero individual impressions
Each article indexed individually — rich result eligible
What We Built
Sanity CMS Integration
Headless CMS with web-based Studio — editors and VAs publish posts, manage images, and update content without a developer.
Programmatic Migration Script
All 58 hardcoded blog posts migrated to Sanity in a single automated pass — no copy-pasting, no manual data entry.
Zero-Downtime Deduplication Layer
Sanity posts served with priority; static fallback kept all existing content live throughout migration. No 404s, no broken URLs.
Per-Page SEO with react-helmet-async
Individual title tags, unique meta descriptions, and Open Graph tags injected on every blog post URL — each one now indexable as a standalone search result.
JSON-LD BlogPosting Structured Data
Schema.org BlogPosting markup added to the blog, triggering rich result eligibility in Google Search Console within days of launch.
Sanity Image CDN
Image optimization and delivery handled by Sanity's CDN — automatic WebP conversion, size-aware delivery, Core Web Vitals green post-deployment.
Sitemap Rebuild & Search Console Submission
Sitemap regenerated to reflect each post as its own URL, with weekly changefreq. Submitted to Google Search Console same day as launch.
Editorial Independence
The content team — VAs and web editors — can now create, draft, preview, and publish posts through a GUI. Zero developer dependency for content.
Tech Stack
Results
Posts migrated programmatically with zero downtime
Developer dependency for new content after launch
To individual article indexing in Google Search Console
Line hardcoded data file being eliminated
- Google Search Console began indexing individual article titles — previously every URL showed the homepage title
- Rich result eligibility confirmed in Google's Rich Results Test tool for blog and content pages
- Editorial team can publish, edit, and manage all content independently through Sanity Studio — no developer required
- Sanity image CDN handles delivery and optimization automatically — Core Web Vitals remained green
- The 7,000-line static data file is being phased out as all content moves to Sanity
Is your site quietly underperforming?
We start every engagement with a technical diagnostic — not a pitch. If the architecture no longer fits what your business needs, we'll identify exactly where the gap is.
