NEWIntroducing Client Dashboard — sign up, order services and manage everything in one place. Get started free
The Platos School logoThe Platos Schoolwww.theplatos.in
Case Study · Early childhood education

The Platos School: WordPress to Next.js Rebuild — Hyderabad Preschool Case Study

How we rebuilt The Platos School's WordPress brochure site as a static-exported Next.js 16 site on Cloudflare Pages — Lighthouse 95+ desktop, 75+ mobile, full AI-search readiness, zero plugins.

By Dharmendra Asimi·Published May 5, 2026
The Platos School — The Platos School: WordPress to Next.js Rebuild — Hyderabad Preschool Case Study

Outcomes

95+
Lighthouse Performance — Desktop
+35-45 pts
75+
Lighthouse Performance — Mobile
+30-40 pts
~2s
Mobile LCP
70% faster
<100ms
Time to First Byte
10× faster
0
Plugin count
from 12+
None
Maintenance window
from quarterly

Engagement: Full website redesign and technical rebuild Industry: Early childhood education — preschool, daycare, kindergarten Stack: Next.js 16 · Tailwind CSS · Cloudflare Pages · Resend · Framer Motion · Lottie Result: Lighthouse 95+ desktop / 75+ mobile · Full AI-search readiness · Zero-maintenance architecture

At a glance

The Platos School in Hyderabad was running on WordPress with 12+ plugins, mobile pages loading in 4-7 seconds, and the constant low-grade fear that any plugin update could break the site. We rebuilt it from the ground up as a static-exported Next.js 16 site on Cloudflare Pages — no CMS, no database, no PHP runtime.

Client The Platos School, Hyderabad
Previous platform WordPress (12+ plugins)
New platform Static-exported Next.js on Cloudflare Pages
Lighthouse — Desktop 95+ Performance · 100 SEO · 100 Best Practices · 100 Accessibility
Lighthouse — Mobile 75+ Performance · 100 SEO · 100 Best Practices · 100 Accessibility
Time to First Byte <100ms (Cloudflare edge)
Plugins / dependencies in production 0

The Platos School website — homepage redesign

The client

The Platos School is one of Hyderabad's most aspiring early-learning institutions. Located in Manikonda — intentionally away from the city's noise and pollution — the school is named, deliberately, after the Greek philosopher.

The choice is a public commitment: that a child's first six years are not a warm-up act for "real school" but the most consequential learning years of a human life, and they will be treated that way.

The school blends four pedagogies — Montessori, Waldorf, Reggio Emilia, and Forest School — into a single child-first curriculum, supported by a STEM-inspired approach and Augmented Reality experiences for interactive 3D learning. They serve children aged 9 months through 5 years.

When the founder approached Aapta Solutions, the brief was unambiguous: rebuild the website from the ground up. Make it fast. Make it beautiful. Make it impossible to break with a missed plugin update. And make it ready for whatever search and AI search look like in 2026 and beyond.

The starting point: a WordPress site that worked, until it didn't

The Platos's previous website was a typical WordPress build. It had served its purpose at launch, but several years in, it had become a maintenance liability rather than a marketing asset.

The pattern is familiar to anyone who has run a content-managed site at this scale:

  • A theme handled the visual layer
  • A dozen plugins handled everything else — the contact form, the gallery, the SEO meta tags, the security hardening, the cache, the cookie banner
  • Each plugin had its own update cycle, its own settings panel, its own incompatibility risks
  • WordPress core itself shipped major updates two or three times a year — each one a calculated risk: skip it and accumulate security debt, install it and hope nothing broke

Specifically, the site suffered from:

  • Performance. Initial load times were in the 4–7 second range on mobile, with First Contentful Paint hovering around 2.5 seconds. The plugin stack added significant client-side JavaScript and an additional database round-trip per page request.
  • Maintenance overhead. Quarterly plugin updates, occasional theme updates, biannual core updates — and the constant low-grade fear that a security vulnerability in any one of them could compromise the whole site.
  • SEO degradation. Multiple SEO plugins competing for control of the meta tags. Open Graph images that 404'd. A sitemap that wasn't always in sync with the live content.
  • No real differentiation in the code. The site looked like every other WordPress preschool site — because, in code, it was every other WordPress preschool site.

The Platos's content updates fewer than five times a year. Building an admin interface to manage that content would add weeks of work and years of maintenance for ten edits.

That observation drove the central architectural decision of the project. (For a deeper look at when WordPress is and isn't the right default, see our guide on WordPress vs Wix vs Shopify for India in 2026.)

Our approach: lean, fast, future-ready

We made an early call that shaped everything else: there would be no CMS, no database, no PHP runtime.

Instead, we made the content itself the source of truth in a single typed filelib/content.ts — and built every page to import from it. When the school wants to update copy, they tell us, we change a constant, and a fresh build deploys to Cloudflare's edge in under two minutes. The file is human-readable. It is version-controlled. It is impossible to accidentally publish a half-finished change.

This is the key shift: a website not as a piece of software you operate, but as a piece of writing you ship.

// lib/content.ts — the single source of truth for every word on the site
export const HOME = {
  schoolName: 'The Platos School',
  headline: 'Hyderabad\'s Globally Recognized Interactive Preschool',
  usps: [
    'Montessori, Waldorf, Reggio Emilia, and Forest School approaches',
    'Waste-to-Wealth, eco-friendly campus away from noise and pollution',
    // ... 6 more
  ]
} as const;

Every page is a React Server Component that imports from this file. TypeScript enforces structural integrity at build time — if a page references a property that doesn't exist, the build fails before deploy. Content typos are caught by the compiler, not by visitors.

Design inspiration

The school's name carried the design tension. Philosophy isn't usually warm. Preschools usually are. We needed both, simultaneously, on every page.

The visual language we developed has three deliberate elements:

1. A handcrafted, slightly imperfect feel

We used Rowdies as the display typeface — bold, friendly, with a slight wobble that keeps it from feeling corporate — paired with Montserrat for body copy. Headings get an animated wavy underline drawn in the brand-orange (#FC800A), hand-styled rather than precision-engineered. Cursors across the site are pencil graphics. None of it screams "kids" — but every element is one degree off from clinical, which is what we wanted.

2. Playschool doodles, used sparingly

We sourced 49 simple line-art doodles — books, balloons, crayons, teddy bears, school bags — and rendered them as low-opacity SVG silhouettes drifting in the backgrounds of section transitions. They're decorative noise, not figure. You feel them more than you see them.

3. Strong, deliberate hero moments

Every page has a confident headline anchor. The home page hero leads with "Hyderabad's Globally Recognized Interactive Preschool" with a wavy underline that animates on load. Below it, eight USP chips — Montessori, eco-campus, AR experiences, STEM, brain gym, compassion. The chips break the wall of text into scannable units. The hero is paired with a Play button that opens a YouTube Shorts of the campus in 1080p, with quality forced via the YouTube IFrame postMessage API.

The result: the design takes children seriously without being performatively child-like. It looks like a school whose principal has read Plato. Which, in fact, it is.

The build

Tech stack

  • Next.js 16 with the App Router and output: 'export' — the entire site builds to static HTML/CSS/JS, no Node runtime in production
  • TypeScript 5 end-to-end, strict mode enabled
  • Tailwind CSS 3.4 with custom brand tokens (brand-orange #FC800A, brand-cream #FBF1E3, brand-amber #F8AD12, brand-navy #171E45)
  • Framer Motion 12 for scroll-in animations, hover micro-interactions, and the menu overlay's circular reveal
  • Lottie React for two specific animations — a kids-walking parade in the footer and a celebratory thank-you scene on the form-submission page
  • React Hook Form + Zod for both contact forms, with full client-side validation
  • Cloudflare Pages Functions for the form submission endpoint — a single TypeScript handler that receives the form, validates it, and forwards it to Resend's transactional email API
  • Resend for transactional email, with a verified theplatos.in sender domain

Pages and features

  • 10 pages — Home, Platos at a Glance, Our Vision, Learning Programs, About Us & The Team, The STEM Way, Infrastructure & Safety, Testimonials, Contact, plus a Blog
  • Blog with launch articles, each carrying full Article + BreadcrumbList JSON-LD schema, internal cross-links to related site pages, and inline navigation between posts
  • Two forms — a quick callback form (India-only, +91-locked, Indian-mobile-validated) on the home page CTA, and a full contact-and-query form (32 country codes, full validation, multi-line message)
  • Embedded Google Reviews via SocialJuice — a live review wall with the option for visitors to leave their own
  • YouTube hero video — high-quality (vq=hd1080) with postMessage-API quality forcing, a custom modal, and lazy iframe initialization
  • Programs page with five distinct program cards, each with its own crop-anchor logic to keep faces in frame across portrait and landscape source photos
  • Infrastructure gallery with a "Safety at a Glance" sub-section and lightbox modal
  • Sticky desktop CTA, hamburger menu with circular-reveal animation on mobile, and a fixed header that goes from transparent to white-blurred on scroll

Performance: how we got to 95+/75+

The Lighthouse scores on the production deploy:

Lighthouse desktop scores — 95+ Performance, 100 SEO, 100 Best Practices, 100 Accessibility

Lighthouse mobile scores — 75+ Performance, 100 SEO, 100 Best Practices, 100 Accessibility

These numbers are not accidental. They are the product of about a dozen specific decisions:

  1. Static export. Every page is a .html file on Cloudflare's edge. No server roundtrips. No database. The first byte of the response is already the rendered page.

  2. Cloudflare Pages global CDN. A request from Hyderabad hits a Mumbai or Delhi PoP. The latency floor is ~30ms before any browser rendering.

  3. Long-cache headers via a custom _headers file. All hashed assets (/_next/static/*, /images/*, /logo/*, doodles, icons, cursors) are sent with Cache-Control: public, max-age=31536000, immutable. After the first visit, every subsequent visit pulls from the browser's memory cache.

  4. Next.js Image component everywherewidth, height, and sizes set on every image so the layout never shifts. Cumulative Layout Shift is essentially zero.

  5. priority on the hero LCP image — the hero photograph downloads with fetchpriority="high" and arrives before any below-fold content gets fetched.

  6. Lazy Lottie loading. The two Lottie animations together are about 1.5MB of JSON. We don't ship that to the browser unless the user actually scrolls to that part of the page. Each Lottie player uses an IntersectionObserver with a 200px root margin to start the fetch just before the user gets there. If they don't scroll that far, they never download it.

  7. Next/font for Rowdies and Montserrat, with display: swap and only the weights actually used in the design.

  8. Tailwind's automatic purge — the production CSS bundle is roughly 12KB gzipped after stripping unused utility classes.

  9. No third-party JavaScript on first paint. SocialJuice, YouTube embeds, and the Resend form all defer or load on demand. The home page's first render uses no third-party origin at all.

  10. Resource hints. preconnect and dns-prefetch for embed.socialjuice.io, youtube.com, and i.ytimg.com open early TCP connections so when the user does interact, the third-party request is already half-done.

  11. WebP logos. The white footer logo is an SVG; the orange header logo is a 22KB WebP — about a third of the size of an equivalent PNG.

  12. Stripped Lottie backgrounds. The kids-walking Lottie shipped with a 2218×868 white rectangle background layer baked in. We programmatically removed it before deploying the JSON — not just for visual transparency on the navy footer, but because that one layer was about 35KB on its own.

The net effect: the whole home page first-paint is around 180KB transferred on a cold visit, and roughly 15KB on a return visit (just the HTML — everything else is in cache). For more on the specific Core Web Vitals techniques we use, see WordPress speed optimisation for India.

GEO + AI readiness

Search is changing. Roughly half of the discovery queries that historically drove web traffic are now being answered inside ChatGPT, Perplexity, Claude, and Gemini — without the user clicking through to a website at all. The website still matters, but the website that gets cited is the website those engines can read, parse, and trust. We covered the full playbook in our Generative Engine Optimization (GEO) 2026 guide.

We treated GEO as a first-class concern, not an afterthought. The site ships with:

Multi-typed schema.org JSON-LD on every page

A single combined PreSchool + EducationalOrganization + LocalBusiness node carries the school's name, alternate names, GPS coordinates, full postal address, opening hours, contact point with admissions language preferences (English, Telugu, Hindi), priceRange, an OfferCatalog listing all five programs as Course items, and sameAs links to every social profile. A second WebSite node tells Google this is the canonical site of record.

// Excerpt — the school appears as a real-world entity, not just web content
{
  '@context': 'https://schema.org',
  '@type': ['PreSchool', 'EducationalOrganization', 'LocalBusiness'],
  name: 'The Platos School',
  geo: { '@type': 'GeoCoordinates', latitude: 17.4022356, longitude: 78.3707779 },
  hasOfferCatalog: {
    '@type': 'OfferCatalog',
    itemListElement: [
      { '@type': 'Course', name: 'Daycare', ... },
      { '@type': 'Course', name: 'Parent-Toddler Program', ... },
      // ... three more
    ]
  }
}

Article + BreadcrumbList schema on every blog post

Each post carries its own headline, description, datePublished, image, articleSection, and a properly nested BreadcrumbList. AI engines can cite the post with full attribution.

FAQPage schema on the home page

Seven question/answer pairs covering ages, location, pedagogy, daycare, teacher ratio, STEM/AR, and admissions. AI engines often quote FAQ entries verbatim — every entry is a chance for the school to be cited as the answer to a parent's query.

`/llms.txt` — the emerging AI-crawler manifest

A markdown-formatted summary of the school written specifically for LLM agents. Identifies the school by name and address, lists the programs and ages, summarizes the pedagogical approach, and answers common parent questions. When an LLM agent (ChatGPT, Claude, Perplexity, Gemini) crawls the site, this file gives it a single high-signal source to ingest.

Per-page metadata

Every page has its own title and meta description via Next's metadata API. Open Graph images are explicitly sized 1200×630. Twitter Cards. lang="en-IN". Per-page canonicals on every blog post.

Robots.txt explicitly allowlists AI crawlers

GPTBot, ClaudeBot, PerplexityBot, and Googlebot-Extended are all welcome. The content is public and we want it cited.

The cumulative effect: when a parent in Hyderabad asks ChatGPT "what's a good preschool in Manikonda?", the chances The Platos appears in the answer go up materially.

Solving the WordPress problem

Worth saying plainly. The new architecture removes entire categories of risk and cost:

  • No plugins. Nothing to update, nothing to break, nothing to compromise.
  • No database. Nothing to back up, nothing to migrate, nothing to be SQL-injected.
  • No PHP runtime. No version compatibility hell. No wp-admin to be brute-forced.
  • No login system. There is no admin interface. There is nothing to log into.
  • No theme updates. The design lives in the codebase. It changes when we change it. Never otherwise.
  • No "something just broke" calls. We have not had one in three weeks of soft launch. We don't expect to.

The total operational footprint of the site is: one git repository, one Cloudflare Pages project, one Resend account, and one verified domain. That's the entire production stack. A future content edit takes 90 seconds — a string change in the typed content file, a commit, and Cloudflare deploys automatically.

Outcome — the numbers

Metric Before (WordPress) After (Aapta build) Change
Lighthouse — Desktop Performance ~50–60 95+ +35–45 pts
Lighthouse — Mobile Performance ~35–45 75+ +30–40 pts
Time to First Byte 800ms–1.2s <100ms ~10× faster
First Contentful Paint (mobile) ~2.5s <1.5s 40% faster
Largest Contentful Paint (mobile) ~5–7s ~2s ~70% faster
Plugin count 12+ 0
Monthly maintenance window Quarterly + ad-hoc None
AI-search readiness None Full schema + llms.txt
Security surface Plugins, DB, admin login Static HTML only Effectively zero

The school went from a maintenance-heavy site that needed care every quarter, to a deploy-once-update-when-needed asset that runs without supervision. They got their time back. They got their performance back. And they got a site that an AI search engine in 2027 can ingest as cleanly as a human reader does today.

What's next

We're already discussing a few extensions:

  • A live admissions tracker — a small client-side widget that shows real-time slot availability per program.
  • More blog content — the launch articles are a starting point. The school's voice is well-suited to long-form thinking pieces, and every new article compounds GEO surface area.
  • Curated video testimonials — currently routed to a separate review.theplatos.in subdomain via SocialJuice. Bringing curated videos onto the Testimonials page itself.
  • A Hindi/Telugu locale — the school's parent community is multilingual; a translated set of pages would expand reach into local-language search.

But the foundation is built to absorb all of it without growing in complexity. That, ultimately, is the point. A website should be the most reliable thing a school owns. This one is.

The takeaway

For service businesses with low content-update frequency — schools, clinics, professional firms, restaurants, event venues, single-product brands — the WordPress default is increasingly a poor fit. It optimizes for editorial flexibility you don't need, at the cost of speed, security, and SEO/GEO surface area you very much do.

The Platos School build is a template for what a modern brochure site looks like in 2026: statically rendered, edge-deployed, schema-rich, AI-readable, zero-maintenance, and visibly faster than the competition.

If you run a business that needs that kind of website, let's talk or use the quote builder for a tailored estimate.

Frequently asked questions

Why did you move The Platos School off WordPress?

WordPress was solving a problem the school didn't have — content editorial flexibility. The Platos updates content fewer than five times a year. The cost of that flexibility (12+ plugins, a database, quarterly maintenance windows, security exposure) outweighed the benefit. A static-exported Next.js site on Cloudflare Pages delivers the same content much faster, with zero plugins, zero database, and effectively zero security surface.

How long did the rebuild take?

About six weeks end-to-end, including discovery, design, content rewriting, technical build, blog migration, soft launch and a one-week QA window. The technical build itself took roughly four weeks of focused engineering.

Does the school still get to update content themselves?

Yes — through us. Content lives in a typed file in the repository. The school sends edits, we make the change, and Cloudflare deploys automatically inside two minutes. For the school's update frequency (under five edits a year), this is faster end-to-end than logging into a WordPress admin, finding the right page, and clicking Update — and it's impossible for them to accidentally publish a half-finished change.

Why Cloudflare Pages instead of Vercel or Netlify?

Cloudflare Pages handles The Platos's traffic well at this scale. Vercel and Netlify are both viable alternatives, but Cloudflare's edge network has better Indian PoP coverage (Mumbai, Delhi, Chennai, Bangalore) which matters for a Hyderabad-based audience. The build pipeline is identical to either alternative.

What happens if the school grows beyond what static can handle?

The architecture scales. Static sites on Cloudflare's edge can handle millions of pageviews a month with no infrastructure changes. If the school later needs interactive features — live class schedules, parent portals, online payments — those become Cloudflare Pages Functions or Cloudflare Workers, deployed alongside the static site. The static foundation doesn't limit the future.

How does this compare to a typical WordPress preschool site?

A typical WordPress preschool site in 2026 ships about 1.5-3 MB of resources on first load, with mobile LCP of 4-7 seconds and a busy maintenance cycle of plugin and core updates. The Platos build ships about 180 KB on first load, mobile LCP around 2 seconds, and no ongoing maintenance cycle. Both deliver the same business outcome — a brochure site that converts inquiries — but the Aapta build does it 4-5× faster with effectively zero ongoing operational overhead.

Will AI search engines actually cite this site?

Citation in AI search isn't guaranteed for any site, but the technical foundations are now in place. The combined PreSchool + EducationalOrganization + LocalBusiness JSON-LD, the /llms.txt manifest, the FAQPage schema, the explicit AI-bot allowlist in robots.txt, and the question-shaped content with direct answers all signal to ChatGPT, Claude, Perplexity, Gemini and Google AI Overviews that this is a high-quality, citable source for queries about preschools in Hyderabad. We measured the site's AI-readiness with our own GEO scanner — it scored in the A-grade band on launch.

Can you do this for our business?

Yes — if your business has low-to-medium content-update frequency and would benefit from speed, security, and GEO/SEO ranking. The pattern works especially well for schools, clinics, single-location businesses, professional services, restaurants and event venues. Get a tailored quote and we'll come back inside 2-3 business days with a proposal.

Project credits

Built by Aapta Solutions · Founder: Dharmendra Asimi · Bengaluru & Hyderabad, India

Visit the live site: www.theplatos.in

Want a similar build for your business? Talk to us or run a free GEO readiness scan on your current site to see where you stand today.

Have a project that needs this kind of build?

Static, fast, AI-search-ready websites for businesses across India, the USA and the UK. The quote builder takes 5 minutes; we send a tailored proposal within 2-3 business days.