Runwell Start a project

Crewstone

One investment firm, two languages, every old link kept

Crewstone homepage: Kuala Lumpur skyline under “Private Equity & Investments”

A bilingual English and 中文 site for a Kuala Lumpur private equity firm: CMS-driven news, fund pages and enquiries, with every old URL redirected.

Client
Crewstone International
Industry
Private equity
Location
Kuala Lumpur
Year
2026
Services
Websites, Backend & APIs, Systems
Status
Launching 2026
The same homepage in Simplified Chinese
The same page, in 中文, with one CMS behind both.

Where it started.

Crewstone speaks to investors in English and Chinese. The old site made that hard: content lived in two places, news was difficult to update, and years of links from press and partners pointed at pages that a rebuild could easily break. The firm needed a calm, institutional site that its own team could keep current in both languages.

Our Funds page introducing the firm’s private credit funds
Our Funds: strategies, performance and track record.
Register your interest form with fund checkboxes
Register interest: validated server-side and emailed to the team.

How we approached it.

We rebuilt the site on SvelteKit with Sanity as a single source of content for both languages, and moved the archive across with import scripts rather than copy and paste. Every legacy URL maps to its new home with a permanent redirect, and both language versions are tied together for search engines so investors land on the right one.

News listing in Simplified Chinese with a featured article
News and insights, published by the firm in both languages.

Where it stands.

The new site is complete and preparing for launch. The team can publish news in both languages from one place, investors get a fast and consistent experience in their language, and no existing link to the firm will break when it goes live.

The system behind it.

Crewstone, taken apart: from the screen people use to the work that keeps it running.

  1. Interface

    What investors see

    • EN / 中文 toggle
    • Fund selector
    • Investor portal link
  2. Site

    Ten page types

    • /our-funds
    • /portfolio
    • /team
    • /news/[slug]
    • /register-interest
    • /careers
  3. Languages

    Paired for search

    • /zh-cn mirror
    • hreflang pairs
    • JSON-LD
    • sitemap.xml
  4. CMS

    One source, two languages

    • newsArticle
    • blockContent
    • articleImage
    • seo
    • routing
    • scrape-crewstone-news.mjs
  5. Operations

    Nothing breaks at launch

    • 308 legacy redirects
    • scripts/check-seo.mjs
    • News snapshot fallback
    • Resend · enquiries

What we built.

  • Two languages, one CMS

    Ten page types, each mirrored under /zh-cn, with translated articles paired automatically.

  • Funds & portfolio

    Fund pages with a performance chart, a fund selector and a clear table of strategies.

  • News that edits itself

    Sanity Studio for the team, with the old site’s news scraped and imported into it.

  • Register interest

    A server-side enquiry form with validation, spam protection, 202 dial codes and email delivery.

  • Search-safe migration

    Permanent redirects for legacy URLs, hreflang pairs, a sitemap and structured data, checked by script.

  • Graceful fallback

    If the CMS is ever unreachable, the site serves a saved news snapshot instead of an error.

Under the hood.

Frontend
SvelteKit, Svelte 5, TypeScript, Manrope + Noto Sans SC
Content
Sanity CMS, Sanity Studio, Import scripts
Backend
Server-side forms, Resend email, Honeypot
SEO
hreflang, JSON-LD, 308 redirects, Sitemap
Quality
SEO test script, Viewport checks

By the numbers

  • 2 languages, one content system
  • 10 page types, each in English and 中文
  • 18 page and screen-size checks, all passing