Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Shahrukh Khan’s September 29, 2026, account of qurandaily.org describes a multilingual Quran, hadith, and duas site built to serve prerendered HTML rather than fetch content from a runtime database on every page request. The post’s “37,000 pages” figure refers to Quran verse routes alone: 6,236 ayat across six locales produce 37,416 routes by multiplication. Adding other site sections brings the author’s stated total to just under 40,000 emitted HTML files.

The implementation is a project case study, not an independently reproduced build or production audit. Its route counts, build time, memory observations, and deployment details are reported by the author.

What the 37,000-page figure counts

The site is described as ad-free and covering Quran, hadith, duas, the 99 Names, prayer-time city pages, and learning pages. Its six listed locales are English, Indonesian, Arabic, Urdu, Turkish, and French.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Figure What it represents
6,236 ayat The Quran corpus count used in Khan’s route-generation example.
6 locales The languages listed in the project post.
37,416 routes Derived arithmetic: 6,236 ayat multiplied by six locales. This is the Quran verse-route subtotal.
Just under 40,000 HTML files The author’s broader total after including additional site sections.

That distinction matters: “37,000 pages” is a rounded description of the Quran-only route count, not the total number of files the author says the whole site emits. The post also reports a cold build of about 90 seconds on the described setup; it is not a comparative benchmark.

How Next.js generates the locale and verse routes

The article’s route pattern is /[locale]/quran/[surahSlug]/[verse]. Its example uses the App Router’s generateStaticParams to enumerate locales, surah slugs, and verse numbers from each surah’s ayat count. It also sets dynamic = 'force-static' and dynamicParams = false. Khan says paths not included in the generated list then return 404.

In the example, surah data comes from local JSON derived from a quran.com Uthmani source, avoiding a network call during the build. That is the author’s account of the implementation, not a verification of the site’s repository. The official Next.js 15 dynamic segments documentation explains how dynamic segments can be rendered at build time using generated route parameters.

Why this content site uses build-time rendering

For stable, text-focused pages, generating HTML ahead of time can keep page delivery from depending on a database lookup at request time. Khan’s stated goal was to avoid a runtime database call on the hot path. In the reported arrangement, build-time work produces files, and the deployment serves those files directly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

That choice trades request-time work for build-time work. Content changes must make it into a new generated output and deployment, while a large route set can put pressure on build resources. The Next.js 15 release article discusses static-generation performance and experimental controls, while cautioning that advanced controls may consume more resources and increase out-of-memory risk. Static generation is therefore a fit to evaluate against the content update cycle, route volume, and available build capacity—not a universal default for every site.

How sitemap sharding addressed the reported memory failure

Khan says the initial app/sitemap.ts approach tried to put all roughly 37,000 Quran URLs into one generated sitemap function and failed during route compilation on the project’s VPS. The post reports an out-of-memory failure at about 1.6 GB, followed by roughly 600 MB steady memory after changing the approach. These are anecdotal observations from this project and setup, not a general measurement of Next.js or sitemap generation.

The replacement described in the post uses a sitemap index and six locale-specific sitemap route handlers, each declared force-static. The author also reports that Google fetched the locale sitemaps within 24 hours, but provides no independent crawl record. The practical decision is whether to generate one sitemap or divide the work into smaller locale-specific endpoints; this case demonstrates the author’s reason for sharding, not a controlled comparison of the two patterns.

How the author reports serving the static output

The deployment described is a VPS running nginx to serve a static output directory, with Cloudflare in Full mode in front. Khan says the edge handles public-facing TLS and caching, and describes using a self-signed origin certificate with Full mode. The post also mentions long-lived immutable caching for hashed /_next/static/ assets in its sample nginx configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

These details document one reported configuration; they are not a security review or a universal certificate recommendation. In particular, certificate validation behavior and available Cloudflare modes should be checked against current Cloudflare documentation before choosing an origin setup. The author mentions a Cloudflare Origin CA certificate as an alternative for Full (strict), but the project post alone does not establish the current product behavior or the right choice for another deployment.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What the case study does—and does not—show

Khan summarizes the architecture this way: “The whole build ships as HTML files, the CDN does the hard work, and you spend zero time maintaining a runtime.” Read that as the author’s description of the design, not a guarantee that a static site needs no maintenance: the same post describes infrastructure and content updates, and the framework’s own release notes warn that some generation controls can increase resource use.

  • The post gives project-specific route totals, a cold-build time, and memory observations; none is an independently reproduced benchmark.
  • It does not provide independently published performance, search-ranking, traffic, or operating-cost statistics. Prerendering and CDN use alone do not establish those outcomes.
  • The implementation offers a concrete example of enumerating multilingual routes and splitting sitemap work, but it does not prove that the same choices will suit another site’s build environment.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.