My wife is a photographer. She had tried several tools for displaying client reviews on her website, but they either lacked polish or were too expensive for such a simple widget. I decided to build one.
Task
Build a customizable, embeddable Google review widget with a full CI/CD pipeline for deployment to my homelab.
Action
Built the app using GPT-6 Astra, Node.js, TypeScript, and Fastify, with plain HTML, CSS, and JavaScript for the frontend.
Created a visual builder for themes, colors, layout, animation, and review filters, with configuration serialized in URL query parameters for sharing and iframe embeds.
Adapted a Google Maps review scraper to stream NDJSON responses. Cached reviews and avatars in PGlite via Sequelize.
Configured GitHub Actions CI/CD to type-check the application, build and publish Docker images to my artifact registry, and update my homelab’s configuration. A Portainer webhook triggers redeployment.
Used Cloudflare Tunnels as the gateway layer.
Result
Paste a Google Maps business link, customize the wall, and copy the code.