Ask at the right moment.
Send the happy ones to Google.
One line of JavaScript. A five-star customer gets handed a link to your Google profile while they still feel like writing. A two-star customer gets a private form that reaches you instead of the internet — and a chance to fix it.
Routing, not gating
Every rating is stored and shown to you. The star threshold only decides who gets offered a link onward.
Schema you can defend
AggregateRating built from approved reviews only. Zero reviews means zero markup, not an empty claim.
Runs on nothing
SQLite and a single ARM container. The free tier of an Oracle Ampere box is genuinely enough.