· Szymon Berski · Portfolio  · 7 min read

Parts & Accessories Catalog

A headless CMS-powered catalog for Volkswagen Polo 6R genuine OEM parts. Astro SSG frontend with Vue 3 interactive tools, Laravel REST API backend, Filament admin panel, automated translations via DeepL, AI-generated descriptions, and a multi-format image pipeline on Cloudflare R2.

A headless CMS-powered catalog for Volkswagen Polo 6R genuine OEM parts. Astro SSG frontend with Vue 3 interactive tools, Laravel REST API backend, Filament admin panel, automated translations via DeepL, AI-generated descriptions, and a multi-format image pipeline on Cloudflare R2.

VW Polo 6R Parts and Accessories Catalog

A comprehensive, multilingual catalog of genuine OEM parts and accessories for the Volkswagen Polo 6R/6C, built with a fully decoupled headless architecture. The Astro-powered static frontend consumes a Laravel REST API at build time, producing pure HTML pages with zero runtime database queries. While not an e-commerce site, it shares many features with online stores — product listings, filtering, search, detailed specifications — except for payment processing.

The project has evolved through several iterations: from an early Vue 2 SPA, through Vue 3, to the current Astro 6 SSG setup with Vue 3 islands for interactive components.

Architecture: Headless CMS + Static Frontend

The system is split into two independent repositories:

Frontend (catalog.polo.blue) — Astro 6 static site generator with Vue 3 components, UnoCSS styling, and a custom design system. All data is fetched from the API exclusively during the build step. The browser never contacts the backend directly (except for client-side tools like the PR Codes Decoder).

Backend — Laravel 13 application serving a REST API and a Filament 5 admin panel. Manages products, categories, translations, media, SEO data, and site deployments. Backed by MySQL, Redis (queues via Laravel Horizon for background jobs like image conversion, translations, and site builds), and Cloudflare R2 for CDN storage. Site deploys can be triggered directly from the admin panel.

This separation means the frontend is a pure static site — fast, secure, and globally cacheable via Cloudflare CDN.

Image Pipeline & CDN

A key challenge was optimizing images given the extensive product catalog and predominantly mobile traffic. The solution evolved from build-time compression via Sharp/Astro to a backend-driven pipeline:

  1. Upload — Images are stored on Cloudflare R2 (S3-compatible) via Spatie Media Library
  2. Conversion — Background queues generate responsive thumbnails in modern formats (AVIF with WebP fallback)
  3. Delivery — Served from cdn.polo.blue with denormalized URLs stored directly on Product/Category models to eliminate JOIN queries in list views
  4. Monitoring — A CDN Stats widget in the admin panel tracks total storage, per-model breakdown, and the percentage of products with all AVIF conversions complete

WebP serves as a fallback to AVIF due to its still limited indexing in Google Image Search.

Polo6R

Multilingual Support & Automated Translations

The catalog supports three languages — English, Polish, and German. All translatable content (products, categories, colors, materials, PR codes, FAQ entries, and more) shares a single unified translation system, so adding a new language requires no schema changes.

  • DeepL API automatically translates content from English into Polish and German via queued background jobs
  • AI-generated descriptions use a multi-provider fallback chain to generate English copy, which is then translated by DeepL
  • Per-locale URL structures (/ for EN, /pl/ for Polish, /de/ for German) with properly configured hreflang tags
  • Static UI strings loaded from JSON files, content translations served already localized by the API

Performance Optimizations

Split Build System

Building all three locales in a single Astro pass caused memory exhaustion (10-20 GB RAM). The solution: a custom split build script that processes one locale at a time, runs Pagefind indexing per locale, then merges everything into the final dist/ directory. Total build time: ~4-5 minutes for all locales.

API Call Reduction

A category prefetch cache fetches all products per main category in a single API call, then filters locally. This reduced ~60 individual API requests to a handful of batch calls during build.

Frontend Performance

  • content-visibility: auto on off-screen product rows to reduce rendering cost
  • Sidebar collapse state restored from localStorage before first paint to prevent CLS
  • Font preloading (VW brand fonts), preconnect to CDN and analytics domains
  • Vite manual chunks separating vendor code (Vue, design system) from page code
  • First 3 product images loaded eagerly, with fetchpriority="high" on the very first image; rest lazy-loaded
Polo6RPolo6R

SEO & Discoverability

Strong SEO has been a primary driver of traffic, especially from image search engines. Key strategies include:

  • Structured Data (JSON-LD) — Rich @graph markup with IndividualProduct (not Product, to signal non-merchant catalog), BreadcrumbList, ItemList for category pages, and Organization entities
  • XML Sitemaps — Generated server-side per locale and type (products, categories, pages), fetched at build time with XSL stylesheets for browser-readable display
  • llms.txt — AI/LLM discoverability files following the llmstxt.org specification
  • Internal linking — Related Products, Similar Products, and in-category navigation buttons (validated via A/B testing) improve link equity and user flow
  • Pagefind — Offline full-text search indexed per locale, with no external dependencies
  • SEO Dashboard — Admin panel widgets audit short/long titles, missing descriptions, and data completeness across all three languages

Interactive Tools

Three client-side Vue 3 tools enhance the catalog’s utility:

  • Tire & Wheel Calculator — Compares two tire/wheel configurations, calculates diameter differences and speedometer deviation, with SVG visualization
  • Power Converter — Converts between HP, kW, and PS with a visual bar chart
  • PR Codes Decoder — Decodes VW factory option codes (3-character codes) by querying the API, with client-side caching

These tools are isolated in a separate Astro route to prevent their CSS (~25 KB) from affecting the main catalog pages.

Backend & Admin Panel

The backend, powered by Laravel 13 and Filament 5, delivers the REST API and provides a comprehensive admin panel organized into functional clusters:

Content Management

  • Product management with detailed specifications, PR codes, engine compatibility, and multi-language support
  • Hierarchical category organization with icon and OG image management
  • CMS page builder with 13 block types (hero, jumbotron, carousel, CTA, FAQ, statistics, etc.)
  • Translation management with DeepL batch automation and protection flags for critical translations

REST API

The API uses configurable response presets to control the depth of included data per endpoint — keeping responses lean for listings and rich for detail views. HTTP cache headers are tuned per route to maximize CDN hit rates.

Analytics & Monitoring Dashboards

  • Google Analytics 4 — Page views, visitors, sessions, devices, top referrers, geographic data (14 widgets)
  • Google Search Console — Clicks, impressions, CTR, average position, top pages and queries
  • Core Web Vitals — CLS, LCP, INP time-series tracking
  • Google AdSense — Multi-site earnings tracking with alerts for revenue drops

Operations & Maintenance

  • One-click site deploy triggering Astro builds via queued jobs (separate site-build queue to avoid blocking translation/media jobs)
  • Cloudflare cache purging by URL, prefix, or model type
  • Database backup/restore utilities
  • Activity logging and full audit trail
  • Data completeness dashboard auditing missing media, translations, descriptions, and link quality

FAQ Knowledge Base

The catalog includes an integrated FAQ system providing technical specifications and how-to guides for VW Polo 6R. Content is organized by product categories (tires, wheels, engine oil, HVAC, brakes, suspension, body parts) and supports multilingual display with links to detailed blog posts.

Deployment

The frontend uses an atomic deployment strategy:

  • Push to main triggers GitHub Actions
  • Astro split build runs on the hosting server
  • Each release gets a timestamped directory; public_html is a symlink
  • Rollback takes under 1 second by re-pointing the symlink to a previous release

Used Technologies

Astro

Static site generator with partial hydration — only loads JavaScript for interactive Vue islands. Split build system handles 3 locales without memory exhaustion.

Vue.js

Powers interactive components: product gallery with Swiper, tire calculator, power converter, PR codes decoder, and language detection infobar.

Laravel

REST API backend with configurable response presets, queued background jobs via Horizon, and Cloudflare R2 storage. Serves build-time data and handles runtime queries.

FilamentPHP

Admin panel with 19+ resources and 36+ widgets organized into clusters: content, localization, analytics (GA4, GSC, Web Vitals, AdSense), and maintenance (deploy, cache, backups).

UnoCSS

Atomic CSS engine with a shared configuration exported from a custom design system, ensuring consistent styling across all projects.

Progressive Web App (PWA)

Installable app with Workbox service worker, NetworkFirst strategy for pages (3s timeout), locale-specific manifests, and automatic background updates.

Cloudflare

Global CDN for static assets, R2 object storage for product images (AVIF/WebP), DDoS protection, and cache purging controlled from the admin panel.

Pagefind

Offline full-text search built per locale at compile time. No external search service needed — the entire index lives in static files alongside the HTML.

DeepL & AI

Automated translation pipeline (EN → PL, DE) via DeepL API. AI-generated manufacturer descriptions with a multi-provider LLM fallback chain for resilience.

Google Tag Manager

Manages Analytics 4, AdSense, and Web Vitals reporting. GTM dataLayer events track product views, category navigation, and Core Web Vitals with attribution.

Strong SEO, image optimization, and structured data have driven significant organic traffic — particularly from image search engines — while the headless architecture keeps the site fast, secure, and easy to maintain.

Back to portfolio

Related posts

Read more
VW Polo 6R user manual

VW Polo 6R user manual

Virtual owner's manual for Volkswagen Polo 6R, designed as a PWA with dark mode and search functionality for easy access to essential vehicle information.

Spoko Design System

Spoko Design System

An open-source Astro-based design system with Vue 3 components and UnoCSS styling. Published as npm package and serving as both documentation site and reusable component library.

Modern Car Blog

Modern Car Blog

Automotive blog built with Astro, Vue3, UnoCSS, REST API, and WordPress.

SEO agency website

SEO agency website

Showcase for a freelance SEO expert dedicated to improving online visibility and driving organic traffic for businesses.