Asset Image Scraper
2025
Node.js/TypeScript service that renders personalized product images on a dynamic canvas via Puppeteer, captures the output as a screenshot, and serves it as an optimized image.
// problem
A client needed to generate thousands of personalized product images programmatically — each with dynamic text, custom fonts, and color overlays rendered on a canvas — to serve as product thumbnails in their catalog.
// approach
Built a headless Node.js/TypeScript service using Puppeteer to spin up a browser pool, load a dynamic canvas page, inject personalization parameters, and capture the result as an optimized screenshot. Implemented smart caching to avoid re-rendering identical configurations and Docker-based deployment on Azure.
// outcome
The service reliably generates personalized product images at scale, handling concurrent requests via browser pool management. Deployed on Azure with Docker, it reduced manual image creation overhead and enabled automated catalog updates.