


The story
A loyalty program only works if it never slows down the line. Production data showed 69% of counter actions were point assignments, so checkout was redesigned around a single gesture: scan, type the amount, tap. Rewards are redeemed before the charge, and a stamp that was already given today is a normal outcome, not an error.
Beyond the counter, the app and the web dashboard at business.kyloy.com cover the full operation: customers and history, rewards, pickup queue, appointments, catalog, branches, memberships and insights. A card studio lets each business design its Apple/Google Wallet pass with a live preview.
Billing runs on Stripe with four plans, yearly pricing and the customer portal. Plan limits are enforced per feature on the API, and every management screen is ready for a "not in your plan" response. An internal admin back office and a Selenium end-to-end suite keep the whole platform honest.
Engineering highlights
One-request checkout
A visit is a single API call. Points are written first and the stamp can never roll back a charged visit.
Verified scans
Every scan, from the app or from a Wallet pass, is verified on the server before points or rewards move, so codes cannot be forged or reused.
Card studio
Brand colours, images, stamp icons and layouts with a pixel-faithful preview of the wallet pass.
Stripe billing that is kind
An idempotent sweep re-checks Stripe before downgrading anyone, and a five-case classifier picks the right email, so gifted plans never get a “payment failed” notice.
Real end-to-end coverage
233 Selenium tests across 55 suites run full sign-up, checkout and billing flows end to end against a real environment.
Serverless-friendly Postgres
NestJS on AWS App Runner with Aurora Serverless v2; a tiny connection pool lets the database pause when idle.






