K eltus
← All projects Case study

GNews.cz

GNews, an Eight Language Beast< Perfect Speed, Perfect SEO.

  • 8 languages
  • 40K pre-rendered pages
  • <250 ms TTFB
  • 100 Lighthouse
  • Zero trackers
  • Self-hosted analytics
GNews.cz cover

gnews.cz — Rebuilt for Speed

Perfect Speed, Perfect SEO, that's not hyperbole. That's what we've achieved with smart planning and best practices using the latest technologies.

The Starting Point

Gnews.cz is one of the largest independent Czech news brand, which was  running on WordPress and  TranslatePress. By 2026, and millions of monthly views, the cracks were impossible to ignore: nine-second time-to-first-byte, fifteen-plus seconds to fully render, and a CMS that buckled under its own weight.

The translation layer was the worst of it. TranslatePress shredded each article into hundreds of phrase fragments, stored them per-language, and re-joined them in SQL on every page view. With 48,000+ articles in eight languages,  the database was doing translation-memory work as part of rendering. Switching languages meant a fresh round-trip and a fresh join, every time. it was a problem that CF, NGINX and other type of caching simply could not fix.

The brief: keep the content, keep the editorial workflow, make it one of the fastest news sites on the web.

The new platform

Next.js 16 (App Router), TypeScript end-to-end, React Server Components, Tailwind CSS 4, and a bespoke Go analytics microservice that replaces Google Analytics, Facebook Pixel, Plausible, and Intercom in one self-hosted binary. Nginx with HTTP/2 and Let's Encrypt out front, everything running under systemd on a single Linux host — no Docker, no Kubernetes, no cloud lock-in.

Where the speed comes from

Incremental Static Regeneration. Every article, category page, and locale homepage is pre-rendered. Readers receive a finished HTML document on the first byte, not a skeleton. When editorial publishes, a webhook revalidates exactly the affected pages, live in seconds, no full-site cache invalidation. Aggregate-heavy widgets refresh in the background; readers never wait for an analytics query.

Images. Every photo is served as WebP, transformed on demand to exactly the dimensions each slot needs, with 1x and 2x srcset entries. A 24-megapixel original never reaches a browser. Article heroes get a five-step ladder from 480 to 1,600 px; homepage grids serve 320–800 px; the lightbox caps at 2,400 px.

Lazy loading. Heavy below-the-fold components — including the animated live-visitor world map — are loaded via intersection observers. Readers who never scroll never download the JS.

Translations, done right

Each article has one complete translation row per locale. Open /de/<slug> and the response is one row from one table, served from cache. Language switching is a static link to the equivalent URL, not a re-translation. Proper hreflang on every page, per-locale sitemaps (sitemap-cs.xml, sitemap-en.xml, …) for clean Google News ingestion.

The full  article back-catalogue was migrated across all eight locales (Czech, English, German, Spanish, French, Italian, Russian, Chinese) without losing a single existing translation. Non-technical editors can correct any UI string in any language through a built-in in-browser editor.

Lighthouse and SEO

Perfect Performance scores out of the gate. SEO sits at 100, earned through JSON-LD NewsArticle structured data, full Open Graph and Twitter Card metadata per locale, semantic HTML, locale-aware canonicals, and a robots config that keeps staging URLs out of the index. Every legacy WordPress URL shape — uploads, ?p= permalinks, old TranslatePress locale paths — is 301'd at the nginx layer, preserving a decade of backlinks and rankings.

No tracking, no third-party scripts

Zero Google Analytics, zero Facebook Pixel, zero Intercom, zero consent-required JS. A custom Next.js API route writes hashed-IP rows to a local table and powers the live world-map widget. The Go service builds rolling aggregates from local access logs. Reader data never leaves the server.

Editorial workflow

A TinyMCE/Tiptap WYSIWYG that mirrors the WordPress Classic Editor staff trained on, plus a modern image library, drag-and-drop galleries, automatic WebP transforms on upload, Top Story and GNEWS Exclusive toggles, scheduled publishing, and many-to-many categories/tags/regions.

Reader features

Real accounts with threaded comments and voting, a daily news quiz with leaderboard that is automatically generated from the previous day's articles using AI, read-later lists, saved-articles feed, dark mode, accessible font scaling, full keyboard navigation, and locale-aware dates pinned to the Prague newsroom timezone.

The result

The site that took nine seconds to deliver its first byte now serves a complete cached HTML page in under 250 milliseconds, with a fully-rendered hero in  500 ms under a warm one. Every Core Web Vital sits at the top of the green band. Editorial publishes faster. Readers stay longer. Google indexes more.

Eight locales. 40,000 individually pre-rendered pages, each served from cache — making gnews.cz one of the fastest news sites in the world.

Same content. Entirely different machine underneath.