Project Overview

Professional-service websites tend to grow page by page until routes, translations, legal copy, menus, and search metadata describe different versions of the site.

I rebuilt this German and Turkish website around typed content and build-time validation, without adding a client-side UI framework that the project did not need.

A bilingual Astro website with typed content, translation-aware routing, publishing guards, and production-safe technical SEO.

Industry

Professional Services

Services

  • UX/UI Design
  • Web Development
  • Product Strategy

Key Deliverables

  • Responsive Design
  • Custom Development
  • User Experience Improvements

Platform Type

Marketing Website

Tech Stack

  • TypeScript
  • Astro 5
  • Content Collections
  • Zod

The Challenge

Partial translations can create broken navigation, incorrect hreflang references, and untranslated pages in search results. Legal content also needs an explicit review state instead of being published because a file happens to exist.

Staging environments must remain indexable enough to test but impossible to confuse with production in search engines.

Approach

Astro Content Collections and Zod define typed services, jobs, legal pages, and general content. Locale-independent keys connect German and Turkish entries while route generation only exposes translations that are actually ready.

Build checks validate translation coverage and publishing status before static output is produced.

The Solution

The site ships German at the root and Turkish under `/tr/`, with locale-aware navigation, canonical URLs, hreflang, sitemap output, page-specific metadata, Open Graph cards, structured data, localized 404 pages, robots.txt, llms.txt, and llms-full.txt.

Legal entries carry states such as published, needs-legal-review, and todo-translate. Deployment checks keep incomplete content out of production, while staging sends X-Robots-Tag noindex, nofollow, noarchive with a guard against applying it to production.

Key Challenges

  • representing partial translation coverage without broken language navigation

  • preventing unfinished legal content from reaching production

  • keeping staging out of search results without risking production deindexing

  • maintaining one page architecture without duplicating locale-specific logic

The Outcome

The result is a fast static site whose content model acts as a publishing system. New pages can be translated, reviewed, indexed, and released through explicit rules instead of relying on manual SEO cleanup.

Context

The strongest part of the project is not a visual component. It is the set of constraints that makes multilingual publishing predictable.

Other projects with related architecture decisions, platforms, or product challenges.