Mobile app + backend
A payments app people trust with their money
Scan a QR code, pay a merchant, done. I led the phone app for a live payments product where a bug means someone's money.
- Client
- Pyng — a payments startup in Australia
- My role
- Senior engineer, lead on the consumer app
- Timeline
- 2 years
- When
- 2024 — 2026
The situation
Pyng is a QR-code payments product in Australia: a customer opens the app, scans the code at the counter, and pays the merchant. Simple to describe, unforgiving to build.
When an app handles money, the ordinary standards are not enough. It has to be secure enough that a bank would be comfortable with it, and stable enough that it never fails while someone is standing at a till trying to pay.
What I built
I led the customer-facing phone app on both iOS and Android, and built parts of the system behind it.
- The scan-to-pay flow — pointing the camera at a QR code and completing a payment, handling the money amounts precisely so a rounding error can never creep in.
- Serious security, because it is people’s money: fingerprint and face login, payment details stored in the phone’s secure hardware, a bank-standard sign-in system, and screenshot blocking on screens that show sensitive information.
- Release and stability ownership — getting versions through the Apple and Google review processes, and watching crash reports and usage data after every release to catch problems early.
The result
- A live payments app shipped and maintained on both app stores.
- Security hardened to the standard a financial product requires.
- Crash and usage monitoring in place, so problems surfaced from data rather than from complaints.
How it was built
React Native for the app so one codebase serves iOS and Android, with Vision Camera for QR scanning, TanStack Query and Zustand managing data and state. Login runs on OAuth2 PKCE through Keycloak; credentials live in the device Keychain. The backend work was NestJS and PostgreSQL. All of it sat in a Turborepo monorepo so code could be shared across the company’s apps instead of being written twice.
Role and timeline
Senior software engineer, March 2024 to August 2026, working remotely with a team in Australia. I owned the consumer app’s architecture, its releases and its stability.
What this involved
- Payments
- Mobile app
- Security
- iOS + Android