skip to content
[··]nano-os v7.0 — booting portfolio
revival nano adolor
senior frontend engineer
00%

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
stack
Expo 54React Native 0.81Reanimated 4Next.js 16OneSignal
Onboarding — no cash, no problem
Tip Earn profile
Show QR code
Transfer successful
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 →
Onboarding — no cash, no problem
Onboarding — no cash, no problem
Tip Earn profile
Tip Earn profile
Show QR code
Show QR code
Transfer successful
Transfer successful

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-ui design-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.
next case study →GearUp MarketRent, buy and sell creative gear
✓