Pablo Zarate
All projects

Kyloy Business

The point-of-sale side of Kyloy, built for a busy counter.

Client
My own product · merchant app & dashboard
Role
Founder · Solo full-stack engineer
Year
2025 – 2026
Status
Live on the App Store
business.kyloy.com
Business web dashboard
Card studio with live wallet preview
Card studio with live wallet preview
Web checkout
Web checkout
Checkout: enter the purchase amount
Checkout: enter the purchase amount
Merchant home
Merchant home
Visit registered
Visit registered
Register a purchase
Register a purchase
Redeem rewards
Redeem rewards
1
tap to register a visit
4
Stripe plans + yearly
82
DB migrations

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

01

One-request checkout

A visit is a single API call. Points are written first and the stamp can never roll back a charged visit.

02

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.

03

Card studio

Brand colours, images, stamp icons and layouts with a pixel-faithful preview of the wallet pass.

04

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.

05

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.

06

Serverless-friendly Postgres

NestJS on AWS App Runner with Aurora Serverless v2; a tiny connection pool lets the database pause when idle.

Next project
Clínica de mama
A calm, fast website for a breast-imaging clinic in Torreón.