Overview
The store reads the catalog live from the iOS inventory app with Firestore onSnapshot listeners, so anything added or edited there appears on the web without a new deploy. Checkout reserves the products first, and stock goes up and down inside atomic Firestore transactions, so two people buying the last unit at the same time cannot both take it. Astro on Vercel for the static part, Firebase client SDK for the live part.