Tipany
Tip anyone, get paid by link or QR.
A tipping and P2P payments product — the mobile app, the public web pay-link page and the admin panel — from QR requests to BVN verification and referral rewards.
- role
- Frontend lead · mobile + web
- year
- 2026
- platform
- iOS · Android · Web
- live
- tipany.me ↗
- stack
- Expo 54React Native 0.81Reanimated 4Next.js 16OneSignal




push → resolveNotificationRoute("referral_reward_earned")
3
surfaces — app, web, admin
1
link or QR to get paid
BVN
identity checks in-app
$ ls ./screens
4 screens · scroll →The problem
Tipping in Nigeria is cash, or a bank transfer typed in by hand. Tipany makes it a link or a QR code: anyone can get paid by anyone, in seconds, without exchanging account numbers.
What I built
The frontend across three surfaces:
- The mobile app (Expo 54, React Native 0.81, Reanimated 4) — tip, send money, request payment by QR, top up, transaction PIN, BVN identity verification, referrals and statements.
- The public web pay-link (Next.js 16, server components) at
tipany.me/<username>/pay/<ref>— no app needed to pay someone. - The admin panel for the ops team.
A few details I'm happy with:
- A KYC guard, not a KYC wall. Unverified users can browse everything; money-moving actions are wrapped in a
withKycGuard()helper that opens a bottom sheet explaining why and links straight to verification. - Push that lands somewhere. Notifications resolve to a route — a referral reward opens referral history — from cold start, background and foreground alike.
- Inputs that behave like money: live thousands separators while typing, stripped on submit; copy-link rows that confirm with a checkmark.
- A local
tipany-uidesign-system package, so app and web share tokens.
Outcome
- One link or QR to get paid, on the web or in the app.
- Verification nudges at the moment it's needed, instead of a gate at sign-up.