Skip to content
POLARGATE
Semiconductors and automotive optical connectivity

One platform for a semiconductor company: site, ServiceDesk and admin portal on a single codebase

Polargate replaced KD.tech's WordPress site and a planned Odoo rollout with one React and Supabase platform holding the bilingual corporate site, a customer ServiceDesk and an admin portal, and now runs it on a monthly senior retainer.

Home page of kd.tech: the KD logo, the headline High Speed Connectivity over Fiber Optics, company figures and the outline of a car on a dark background.
kd.tech
100 / 100 / 100
Lighthouse mobile: accessibility, best practices, SEO (SEO was 69)
327
bilingual pages in the sitemap accepted by Search Console
22
customer tickets resolved through the desk, April to July 2026
20 h
senior maintenance hours per month under contract
238 KB
public bundle gzip, down from 321 KB
155
automated tests on every change, plus a healthcheck every 6 hours

The problem

KD.tech designs semiconductors and optical transceivers for automotive Ethernet and sells to carmakers and Tier 1 and Tier 2 suppliers across Europe, the United States and Asia. That engineering sat behind a WordPress site the marketing team could not edit in two languages, technical documentation spread across PDF links, and a careers form that stored applications without the CV. There was no customer support desk at all: the plan on the table was an Odoo Community rollout. And because the site rendered in the browser, AI search engines received an empty 3,559-byte shell.

What we built

Polargate dropped the Odoo plan and built one Vite, React and TypeScript application on Supabase and Vercel, with three surfaces on the same codebase: the bilingual site with a CMS and a curated Design Center, a customer ServiceDesk with email in and out and automatic assignment by region, and an admin portal with analytics. We then moved the platform onto Polargate's own Supabase project with verified parity, added structured data, hreflang and a prerender that serves AI crawlers the same text a person reads, and put every change behind CI gates and an external healthcheck.

The outcome

The site now scores 100 on mobile for accessibility, best practices and SEO, up from 69 on SEO, and the public bundle dropped from 321 to 238 KB gzip. Search Console accepts a sitemap of 327 bilingual pages, and AI crawlers read full articles instead of an empty shell. Twenty-two customer tickets were resolved through the desk between April and July 2026. Six live breakages, including a careers form that had been storing applications without the CV, were found and fixed under the maintenance retainer.

Stack

  • React
  • Vite
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Supabase
  • PostgreSQL
  • Deno
  • Vercel
  • Resend
  • OpenAI
  • GitHub
  • GitHub Actions
  • GA4
  • Search Console
  • Vitest
kd.tech

The company and the starting point

KD.tech designs semiconductors and optical transceivers for automotive Ethernet over plastic and glass optical fibre, and sells to carmakers and to Tier 1 and Tier 2 suppliers in Europe, the United States and Asia. That engineering sat behind a WordPress site the marketing team could not edit in two languages, technical documentation spread across PDF links, and a careers form that stored applications without the CV. Customer support had no home of its own: the plan on the table was an Odoo Community rollout.

What we found

  • The site was a single-page app, so AI crawlers (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot) received an empty 3,559-byte shell.
  • Lighthouse mobile scored 69 on SEO, and the hero text measured 1.13:1 contrast in dark mode, a WCAG failure.
  • The documentation section and the six deployment pages had been returning a real 404 since May.
  • Document downloads were still being counted against a backend that was meant to be retired.

What we built

One Vite, React and TypeScript application on Supabase and Vercel, with three surfaces on the same codebase:

  • kd.tech: the bilingual EN/ES site with a CMS for news, products and jobs, and a Design Center of standards, white papers and user guides with download tracking.
  • kd.tech/help: a customer ServiceDesk with email in and out through Resend on its own subdomain, a Postgres trigger assigning every ticket to a business manager and a field application engineer by region (Europe and the Middle East, Asia, the USA and rest of world), region-scoped visibility enforced in the database, SLA tiers and a rating on close.
  • kd.tech/portal: the admin panel, with first-party cookieless analytics stored in KD's own database plus GA4 and Search Console in a single view.

We then moved the platform onto Polargate's own Supabase project with verified parity: 55 tables, 148 RLS policies, 37 edge functions and 371 of 371 storage objects, with no data loss.

How it runs now

Structured data (JobPosting, NewsArticle, Organization), hreflang and a dynamic sitemap of 327 pages keep the site legible to search engines. A server-side prerender gives AI crawlers the same text a person reads, built from the same translation keys the page renders, with a test that fails if the two ever drift apart. Every change passes GitHub Actions: typecheck, 155 tests, build and lint, which went from 137 errors to zero. An external healthcheck runs every six hours over public pages, crawler responses, the sitemap, password recovery and the download route. Maintenance is a fixed pool of 20 senior hours a month, and customer support runs on Polargate's multi-tenant ServiceDesk, where KD was the first tenant: 22 tickets resolved between April and July 2026.

FAQ

Questions about this project

How long does it take to replace a WordPress site with a custom platform?
It arrives in batches, not in one launch. For KD.tech the corporate site went live first, then the ServiceDesk, the Design Center and the analytics panel, and in July 2026 the migration onto Polargate's own backend. Every batch reaches production behind CI gates, so the marketing team keeps a working site the whole way instead of waiting months for a single switch-over.
Can ChatGPT and Perplexity read a React single-page app?
Not by default. Crawlers such as GPTBot, ClaudeBot, PerplexityBot and OAI-SearchBot do not execute JavaScript, so KD.tech's pages reached them as an empty 3,559-byte shell. Polargate added a server-side prerender that builds the real HTML body from the same translation keys the page renders, with an automated test that fails if the two ever drift apart. Articles now arrive as roughly 10,900 bytes of readable content.
Can you build a support desk into our own website instead of buying a helpdesk tool?
Yes, that is what KD.tech runs. Tickets arrive by email or through kd.tech/help, a Postgres trigger assigns each one to a business manager and a field application engineer by region (Europe and the Middle East, Asia, the USA and rest of world), and the database itself decides who can see which ticket. Customers rate the ticket on close, and replies go out by email, so nobody has to learn a new tool.
What does a monthly maintenance retainer actually cover?
A fixed pool of senior hours each month, 20 in the case of KD.tech, spent on changes the client asks for and on problems nobody has reported yet. In August 2026 Polargate found and fixed six live failures, including a careers form that had been storing applications without the CV. An external healthcheck runs every six hours, and every change passes typecheck, 155 tests, build and lint before production.

Related work

INITIATE

Start the engine

Tell us what you are building in a few short questions. A senior engineer answers in writing within 48 business hours, with a first take on scope, timeline and price.