The public pay page served at pay.kivuli.xyz/{username}. A visitor lands here to
send money to a Kivuli user: pick a chain and token, scan the QR or copy the
one-time address.
Built on the Kivuli design system (cloned from website/): Next.js App Router,
Tailwind v4 tokens, next-themes (light / dark / system), Geist and Bricolage
fonts, and Framer Motion.
pnpm install
pnpm devOpen a user page, for example http://localhost:3000/maya.
The bare root redirects to kivuli.xyz.
/[username]renders the pay page.resolveUserinsrc/lib/pay.tsaccepts any valid handle except a reserved not-found list (for example/ghost).- Preview query params (mock only):
?state=loadingholds the address-generating state?state=receivedshows the payment-received success view?asset=eth|usdc|solpreselects the asset
There is no backend wired. src/lib/pay.ts mints placeholder addresses, builds the
EIP-681 / Solana Pay URIs, and resolves usernames. Every seam is marked with a
TODO(api) comment: address minting, username validation, and payment detection.
node scripts/shot.mjs <path> <light|dark> <width> <out.png> screenshots a route in
a given theme and width using system Chrome.