PLATFORM · CATALOG · CLIENT UNDER NDA
Splitting marketing from logistics in a headless parts catalog
A bilingual B2B and B2C parts catalog moved from Drupal to Astro and Storyblok, with marketing content and warehouse data kept in separate systems.
- −70%
- manual operational work
- 100%
- offer updates automated
- +60%
- Lighthouse performance score

- Role
- Project and Tech Lead
- Duration
- 3 MONTHS
- Year
- 2023
- Client
- Under NDA
The problem
The catalog of a supplier of technical parts ran on a monolithic Drupal installation. It had built up technical debt, and the real problem was that nobody's responsibilities were separated:
- 01
The marketing team entered every change to the assortment by hand.
- 02
Procurement reported each correction of stock levels and specifications, and someone had to enter it.
- 03
Pages loaded slowly, and the installation carried a high number of known vulnerabilities (CVEs).
The brief
The goal was a bilingual platform on a headless architecture. It had to do four things:
- 01
Separate marketing content from the stock levels and technical specifications of products.
- 02
Synchronize warehouse data automatically.
- 03
Shorten Time to Interactive (TTI) and Time to First Byte (TTFB).
- 04
Meet WCAG standards and expose a semantic structure and metadata that scrapers, LLM crawlers and semantic search can read.
What we built
- 01
Two sources feeding one site
Marketing content lives in Storyblok Cloud, with Visual Live Preview. The marketing team builds modular layouts, landing pages and promotional content without engineers. Technical data, stock levels and part numbers (SKU) come straight from the warehouse and inventory API. Marketing content has no connection to stock data.
- 02
Static pages with islands in Astro
Instead of a heavy single-page app, the platform is built in Astro and TypeScript. The core of each page is generated statically, so almost no JavaScript sits on the critical rendering path. The interactive parts are isolated client islands: filters by technical parameters, search by part number, and the currency and language switchers.
- 03
Fresh stock data
Product data is pulled from the warehouse API when the site is built, and an island checks stock live in the browser, so the figures on the page stay current.
- 04
Search by part number
I tuned indexing and internal routing for exact part numbers. The sales team told us it shortened navigation during calls with technical customers.
- 05
Event tracking
The site sends custom business events that support funnel analytics for marketing, without affecting Core Web Vitals.
- 06
Security and hosting
The static build goes through a secured CI/CD pipeline on Netlify and is served from an edge CDN. The database and plugin attack surface of a traditional CMS is gone, and patching the CMS is now the job of the vendor, Storyblok Enterprise Cloud.
My role
I was the project and tech lead, with a team of two engineers, one full-stack and one frontend. The project took three months.
Outcome
Manual operational work fell by 70%, counted by the tasks the teams no longer do. Marketing and procurement now work independently, each in its own source system. Updates to the offer are fully automated: stock levels and SKU parameters refresh through the API, and nobody enters product data by hand. The Lighthouse performance score rose by 60%, and TTFB and TTI dropped. The markup is prepared for accessibility and for indexing by AI agents.
TECH STACK
Built with
LANGUAGE
- TypeScript
STACK
- Astro
- Storyblok
- Warehouse API
INFRASTRUCTURE
- Netlify
05 / CONTACT
ACCEPTING NEW STRATEGIC ROLES FOR 2027
I thrive where complex engineering meets commercial reality. Open to Head of Web & Product roles.
KRAKÓW, PL
BUILT WITH BEARMINION
