Problem
Pricesearcher’s public site covered product comparison and verticals such as insurance, travel, utilities, education and finance. These needed different layouts and features without becoming separate websites to maintain. Product search also had to present results from multiple providers, with market-specific relevance and affiliate tracking.
Architecture
The public frontend used React and TypeScript with server-side rendering, followed by a Next.js codebase. A configuration-driven view-mode system selected layouts, features and styles for each vertical, while product pages consumed the product search API. AWS Serverless deployments provided branch-based staging and production environments.
What I built
- Built view modes for insurance, travel, utilities, education and finance, plus the combined products, offers and vouchers page.
- Built search features including autocomplete, top-10 product pages, Kelkoo product cards, rating tags and merchant names.
- Added affiliate and campaign tags, country-specific relevance handling, advert configuration and reCAPTCHA integration.
- Worked on dark mode, mobile fixes, internally packaged icon assets and weighted selection of S3-hosted landing-page variants.
- Maintained deployment infrastructure, GitHub Actions, S3-backed state and secrets handling, and Node.js and Tailwind upgrades.
Engineering decisions
- Shared configuration and view modes kept the verticals in one codebase rather than splitting them into separately maintained sites.
- Country-specific relevance handling allowed the shared search experience to account for market differences.
- Landing-page experiments used weighted, configuration-driven selection of variants stored in S3.
Technologies
React, TypeScript, Next.js, Node.js, Serverless Framework, SSR, SCSS (ultiscss), Tailwind, Cypress, AWS, GitHub Actions.
Results
The shared view-mode structure supported different verticals within one codebase. My Next.js work added search and provider-specific presentation features to the public site, while the deployment and UI maintenance supported the surrounding application.