Start a project
We'll respond as soon as possible with clear next steps — no obligations.
Case study · Biotech
Resea Biotec is the official Swiss distributor and service partner of Getinge Applikon, based in Recherswil. We rebuilt its website in German and English on WordPress: 22 bioprocess products filterable by their specifications, 16 application pages, solution bundles and an inquiry form on every product — no prices, no cart.

The brief
Resea Biotec was founded in 2020 as a spin-off of ReseaChem and supplies Getinge Applikon bioreactors, controllers, sensors, perfusion systems and software in Switzerland, together with service on site; Hamilton sensors complete the range. Its products are described by measurable data such as volume, cell type and process parameters.
The rebuild had to make 22 request-only products findable by exactly that data, link them to the applications they serve, run in German for Switzerland and in English — and keep the old site’s addresses leading somewhere useful.
The challenge
Resea Biotec sells nothing with a checkout: every system is requested. So each product had to be described by its data, comparable with its variants and requestable through a form — in two languages, with translated addresses.
And the site could not freeze after launch. New pages had to arrive without touching the 38 blocks that already hold live content.
243 attribute definitions become 130 filter taxonomies with 1,218 terms, kept identical in German and English through a synced base slug.
German for Switzerland without a prefix, English under /en/, translated post type URLs — and redirects for the old site’s addresses.
Blocks with live content are frozen. New requests ship through a CI build check and a deploy gate that counts the blocks before every release.
Behind the build
The build ran from the first commit in late January to the hand-over in early June. One in-house team covered five disciplines along the way — management, development, content, SEO and support — and stayed on for the change requests that came after launch.
What we built
Spec filter
Category and brand pages carry a sidebar filter built on the products’ own specifications. Each attribute is its own filter taxonomy, results load without a page reload, and filter URLs skip the page cache so every combination stays current.
Product pages
Every product page brings together a gallery with zoom, tabs for description, technical features and compatibility, a table that compares the variants, downloads and the brand logo. Instead of a price, an inquiry popup sends the request straight to the team.
Applications
Application pages, from mammalian cells to cell and gene therapy, sit in a hierarchy with two categories: organisms and end products. On the product pages, tabs fed by a custom REST route list the applications each system serves.
Solutions & service
Solution bundles show what each package contains, with the included products and an “Ideal for” row. The maintenance and support page explains the service workflow, the plans and a support roadmap — each one a block of its own.
Two languages
German (de-CH) is the default without a prefix, English lives under /en/, and post type URLs are translated: /produkte/ becomes /en/products/. Filters, search and REST routes follow the current language, and hreflang points to de-CH, en and x-default.
Inside the project
Most agencies show you the finished site. We show you how it got there. Open any discipline to see what the team did and what it handed over.
01 / Project management
The project ran on GitHub across two repositories: personal dev branches, merged by pull request, deployed by FTP on every push to main. Staging came first; the switch to production was a change of one deploy target. A CI build check runs on the block plugin’s dev branches and pull requests.
221
merged pull requests in two repositories
550
commits in two repositories
What we did
Handed over Approved scope and requirements → Design
02 / Development
A Blocksy child theme with six public post types and an attribute engine that turns specifications into filter taxonomies, plus a plugin with 45 dynamic Gutenberg blocks in seven categories. Six custom REST routes and four AJAX actions connect filters, search, tabs and the video player.
45
dynamic Gutenberg blocks
6
public post types
6
custom REST routes
What we did
Artifacts
Handed over Tested build on staging → Content & SEO
03 / Content
Two languages from the first page: products, applications and pages exist in German and English, assembled from the same blocks. 40 of the 45 blocks are in use in published content, and 16 forms cover eight request types in both languages.
22
products per language
16
application pages per language
40
of 45 blocks in published content
What we did
Artifacts
Handed over Structured content in the CMS → SEO & GEO
04 / SEO & GEO
A custom layer on top of Yoast: hreflang remapped to de-CH, en and x-default, one Organization and LocalBusiness graph, ItemList on listings, FAQPage on FAQ sections and Open Graph tags. Permanent redirects carry the old site’s addresses into the new structure.
136
301 redirects from old addresses
7
schema types on the home page
What we did
Artifacts
Handed over Indexed, crawlable site → Launch
05 / Technical support
After launch the site kept growing on request: a new Events page for a symposium with seven blocks, most of them built from Figma designs, and every block opened up for every post type. Each release passes the CI build check and the deploy gate.
7
Events blocks added after launch
What we did
Artifacts
Handed over Ongoing — we stay with the client
The project in numbers
Counted from the live sitemaps and pages, the code in both repositories and a copy of the database.
45
dynamic Gutenberg blocks
22
products per language
1,218
filter terms in 130 spec taxonomies
16
application pages per language
136
301 redirects from old addresses
7
schema types on the home page
16
forms: eight types in DE and EN
221
merged pull requests in two repositories
Below the surface
Lab teams see a catalogue that answers their questions. Underneath sit the safeguards, data structures and search signals that keep it correct in two languages.
The FTP deploy stops unless every PHP file passes a syntax check, every block is built and at least 45 block folders exist.
136 permanent redirects lead old paths such as /de/our-products/ and former file links to the new structure.
A custom Organization node replaces Yoast’s, joined by a LocalBusiness node with coordinates and opening hours and ItemList on listing pages.
Hidden crawlable links sit behind “Mehr laden”, hreflang also covers paginated and brand pages, and deep page URLs no longer end in a 404.
The first category image on the home page is preloaded with high priority, from the same query that builds the grid.
Attribute base slugs stay in sync across translations, and filters, search and REST routes always receive the current language.
One config holds palette, categories and breakpoints, and written rules freeze the 38 blocks that carry live content while new ones are added.
The symposium page arrived after launch with seven new blocks — added next to the existing ones, not on top of them.
What you can expect
We build for the things that last — a platform that is clearer to navigate, more credible to every visitor and genuinely easier for your team to run and grow.
Clear categories, filters and prices let visitors find the right offer themselves instead of writing to ask where to begin.
A site that looks and reads like the quality behind it — for first-time visitors and long-standing customers alike.
Your team updates products, content and news itself — no developer ticket, no waiting in a queue.
New products, categories and languages slot in as the business expands — without a rebuild.
We agree the goals that matter up front and build toward them together — then stay on as a partner after launch to keep the platform sharp as the business grows.
In their words
The real measure of a project is whether the people who live with it every day would do it again.
Visitors now filter our bioreactors by the data they actually work with, in German or English, and every product ends in a request. New pages like the symposium came in without touching what was already live.
Working with
Start a project
We will respond as soon as possible with clear next steps — no obligations.