Case study Marketing website

The site you are reading, moved from Next.js to Rust without losing a URL

envixo.com is published in 99 languages. We rewrote it from Next.js to Rust, compared every URL with the old site before the switch, and fixed what the old site got wrong for search engines, right-to-left languages and AI assistants.

Client
Envixo
Platform
Web
Industry
Marketing website
Launched
2026

The challenge

The Next.js site worked, but it needed a Node.js server with 512 MB of memory reserved, sent around 150 KB of HTML per page and had gaps: no right-to-left layout, and structured data added only by JavaScript.

Before: A Node.js server with 512 MB of memory reserved
After: A Rust binary in a container of about 33 MB, using about 46 MB of memory
Before: About 150 KB of HTML per page, including the React payload
After: Server-rendered HTML, with plain JavaScript only where it is needed
Before: Structured data added by JavaScript after the page loaded
After: Translated JSON-LD in the HTML the server sends
Before: Arabic, Hebrew, Persian and four other languages laid out left to right
After: Right-to-left layout for all seven right-to-left languages
Before: www.envixo.com answered with an error, and there was no llms.txt
After: www redirects to envixo.com, and /llms.txt describes the company for AI assistants

What we built

A Rust server with axum and Askama that serves the same URLs, the same 99 locale files and the same design, built with Tailwind and plain JavaScript.

The same URLs and redirects

Language detection, locale prefixes, trailing slashes and the language cookie behave like the old site, so no link or ranking was lost.

SEO parity, then better

Metadata, hreflang, JSON-LD and the sitemap match the old site, with fixes to the social sharing tags and a new llms.txt.

A zero-difference gate

A tool compared every URL of the old and new sites. The switch required zero differences, plus screenshots at three widths in English, Arabic and Japanese.

Explore in 3D

A guided three.js tour of the whole landing page, with a plain list when 3D is not available.

A contact form without an SDK

A spam check with Cloudflare Turnstile and email through Amazon SES, with requests signed by hand, a honeypot and a limit per visitor.

Errors reported, keys kept safe

Server and browser errors go to Honeybadger, and the API key never reaches the page.

Engineering results

Memory measured in production in October 2026; image size from the build. The sitemap count is checked by an automated test.

~33 MB
Container image for the whole site
~46 MB
Memory in use
99
Languages from the same locale files
594
Sitemap URLs, all kept
  • Rollback by DNS, with the old site kept for seven days
  • Dependency updates merged automatically once tests and the image build pass
  • Tests and builds run on Envixo's own CI runners
  • Published in 99 languages from the same locale files as before

Technology

  • Rust
  • axum
  • Askama
  • Tailwind CSS
  • three.js
  • Amazon SES
  • Cloudflare Turnstile
  • Kubernetes

Need software built around your business?

Integrations, internal tools, apps and platforms, built to order by senior engineers directing AI agents. Tell us what you need and we will show you how we would build it.