v0.1.0npm install →

The App

The Auron App

A conversational, AI-powered payment application. Users interact in natural language — Claude AI parses intent and constructs on-chain transactions invisibly. No crypto knowledge required.

LIVE AT AURON-MOCHA.VERCEL.APP

Core capabilities

AI Intent Engine

Type “pay ₹500 to Swiggy” — Claude Sonnet parses the intent into a structured payment action. Voice input supported on Chrome.

QR Scanner

Camera-based UPI QR scanner powered by ZXing. Scan any merchant QR and enter the amount — bypasses the AI entirely for speed.

Phantom Wallet

Desktop via the Phantom extension. Mobile via deep link — opens Phantom app, authenticates, redirects back with the signed transaction.

Spend Ceiling

User-configurable per-payment cap (default USDC 500) and daily cap (USDC 5,000). Hard-blocked at the server — not just UI validation.

PIN Protection

Optional hold-to-pay PIN hashed with argon2id server-side. Raw PIN never stored. Required above a configurable amount threshold.

Transaction History

Full payment history with audit trail drawer. Each entry shows: amount, merchant, UTR, Solscan link, and the full state machine timeline.


AI chat interface

The primary interaction mode. The chat interface streams Claude's response in real time using Server-Sent Events. The system prompt is 107 lines and cached with cache_control: ephemeral — subsequent requests use the cached version, saving ~90% of token cost.

When Claude identifies a payment intent, it returns two payloads separated by |||:

text
HereC8F135">'s your payment for ₹500 to Swiggy. The USDC equivalent at today's rate is 5.94 USDC.
|||{C8F135">"action":C8F135">"upi_payment",C8F135">"upi_id":C8F135">"swiggy@icici",C8F135">"inr_amount":500,C8F135">"usdcAmount":5.94,C8F135">"confidence":0.97}|||

The left side is displayed to the user. The right is parsed as a structured action and dispatched to the payment flow.

Supported actions

upi_paymentUSDC → treasury → INR → UPI payout to merchant
transfer_usdcUSDC transfer to any Solana wallet address
transfer_solSOL transfer to any Solana wallet address
lock_savingsTime-locked USDC deposit into the Anchor vault program
stamp_agreementSHA-256 agreement hash written as a Solana memo
stamp_ownershipFile ownership proof written as a Solana memo
generate_pay_linkShareable /pay/[slug] URL with prefilled amount
spending_queryQuery daily spend and cap status from local state

Onboarding & PIN

First-time users go through a 3-step onboarding flow before any payment is possible:

01
Wallet connection

Phantom desktop or mobile deep link. The Solana public key becomes the user identity — no email or phone required at this stage.

02
Spend ceiling

User sets a per-payment maximum (default ₹5,000 / USDC 60) and a daily cap (default USDC 5,000). These are enforced server-side — the UI cannot bypass them.

03
PIN setup

Optional 4–8 digit PIN. Sent to POST /api/hash-pin — argon2id hashed server-side with memoryCost=65536, timeCost=3, parallelism=1. Raw PIN never persists. The hash is stored in the Zustand store with localStorage persistence, excluded from the network.


Every Auron pay link is simultaneously a human-readable payment page and a composable Solana Action — operable inside X/Twitter, Dialect, and Phantom without leaving the host surface.

bash
# Human-readable payment page
https://auron-mocha.vercel.app/pay/demo?amount=500&note=Lunch

# Same URL — paste into a tweet, it becomes an executable payment
# No redirect. No separate app. Signs directly in Phantom.
bash
# Solana Actions endpoints
GET  /api/actions/pay   →  action metadata + label
POST /api/actions/pay   →  serialized transaction for wallet signing
TIP
Paste any Auron pay link into a tweet — Dialect renders a Pay button natively. The user taps, approves in Phantom, and the merchant is paid. Zero redirects.

ConfirmCard — the payment gate

Before any wallet signature is requested, the ConfirmCard shows the user exactly what will happen:

  • Amount mirror — INR amount, USDC equivalent, live FX rate
  • 60-second quote timer — auto-dismisses at expiry (800ms grace period)
  • Hold-to-pay — 1,500ms hold required. Prevents accidental payments. Haptic feedback on hold start.
  • Security flags — urgency keywords, large amounts, new recipients displayed inline
  • Disabled state — opacity 0.35, pointer-events none after quote expires
NOTE
The ConfirmCard is shown for both the AI chat path and the QR scan path. It is the single point where the user explicitly authorizes the transaction — nothing triggers Phantom before this.