Decisions with
a reason.
I studied how QRIS actually works end-to-end, from dynamic QR generation to the payment verification callback, then designed Next.js API endpoints to handle the full transaction flow reliably. Because the frontend cashier interface and backend payment logic were tightly coupled, optimizing Firestore queries for sales reports meant constantly reconsidering how that data would render on screen.



