Tapyra
What it does
Tapyra — Tap. Pay. Proven.
Inspiration
Crypto payments still feel like infrastructure: networks, addresses, confirmations, irreversible mistakes. Merchants do not need another wallet. They need a sale — catalog, cart, tax, receipt, reconciliation — that survives audit and closeout.
I asked a sharper question: Can a self-custody crypto currency transfer become a verifiable point-of-sale event without ever holding a key or customer funds?
That question became Tapyra: a smartphone POS for everyday merchants. The customer signs locally; funds move peer-to-peer to a merchant-controlled wallet; the platform independently proves network, asset, amount, and destination before any order can become paid.
The commercial thesis is U.S.-first: 36M+ small businesses, rising mobile in-person payments, and a clearer stablecoin policy landscape. Self-custody reduces custody risk; it does not remove the need for reconciliable evidence, compliance partners, and product honesty.
What it does
In the hackathon MVP:
- Merchant authenticates (email OTP), loads a USD catalog, builds a cart, and creates a server-owned order.
- The POS displays a QR with a short-lived opaque token only — no amount, wallet address, session JWT, or on-chain proof is encoded in the code
- Customer opens the payer page, reviews the server-resolved summary, and signs a direct USDC
MsgSendon Noble Testnet (grand-1,uusdc) with Keplr. We use keplr wallet as the self-custody wallet is not fully ready for the MVP. - A Cloudflare Worker verifies the chain evidence against two independent RPCs (chain ID, message type, destination, denom, exact amount, replay defenses, finality).
- On success, PostgreSQL atomically transitions the order and attaches an authenticated receipt. Cache, queues, and client optimism are never payment proof.
Tapyra never holds a private key or customer funds.
How is it built
We built Tapyra as a new product with Codex** and GPT-5.6 sol, terra et luna, under my developpement experience guidance.
invariants (non-negotiable) :
- Self-custody only — no seeds, keys, or encrypted envelopes in Cloudflare, Supabase, Redis, logs, or client JS
- Opaque QR capability; all money fields server-derived
- Dual-RPC fail-closed finality before
paid - PostgreSQL as authoritative ledger; integer minor units only (no floating point)
- Deny-by-default authz and tenant isolation (RLS)
Codex / GPT-5.6 accelerated:
- Architecture, threat model, and execution ledger (
plan.md, agent protocol) - Edge API: Cloudflare Workers + Hono, Zod validation, JWT checks, idempotency, payment verification
- Data plane: Supabase Auth, migrations, grants, RLS, pgTAP
- Mobile POS: Expo SDK 57 (merchant flows + web payer)
- Shared contracts, Vitest suites, and reproducible demo gates (
scripts/demo-gate.mjs) - U.S. investor / GTM pack aligned to what is actually shipped — not aspirational NFC marketing
Stack: TypeScript · Expo / React Native · Cloudflare Workers · Hono · Supabase · PostgreSQL · Zod · Noble / Cosmos · Keplr / CosmJS · Vitest · pgTAP
Repo: https://github.com/tomdgImpact/Tapyra
What I learned
- Scope is a security control. The original vision included native wallet, Face ID, NFC, multi-chain, and a future validator-terminal network. That surface could not prove the essential invariant in one week. We narrowed to one network, one asset, one signer (Keplr), one transport (QR), one POS loop — and deferred NFC/native signing behind explicit gates.
- A sale is not a deposit. Reconciliation, receipts, and atomic state transitions matter as much as the signature UX.
- Fail closed beats demo theater. Prefer pending/failed over a simulated
paidwhen external dependencies degrade. - Codex multiplied delivery speed. Founders retained the non-delegable decisions: no custody of keys, no fake “paid” states, and no over-claiming compliance
- Compliance is part of product design. Regulatory and tax design ships with the product, not as a retrofit once GMV arrives.
Challenges I faced
1. Trust without custody
Designing a POS that creates commercial value without ever being able to move funds. Solution: capability-based QR, server-owned payment intents, local Keplr signing, and independent chain verification.
2. Dual-RPC finality on testnet
Payment completion stays fail-closed while the second Noble RPC returns stale data (RPC_STALE). We chose not to fake a finalized payment for the jury. Judges can still see the full merchant loop, Keplr payer flow, receipt path, and forged-proof rejection with no fraudulent paid mutation. That limitation is product discipline, not a missing screen.
3. Time vs. ambition
NFC, Secure Enclave wallet, accounting export, and multi-location ops remain post-hackathon (pilot → native wallet → merchant platform/NFC → terminal/validator network), each with separate security and legal exit gates.
4. Building with agents at Critical/High risk
We used a multi-agent protocol (implementer / tester / security reviewer, file leases) so velocity never rubber-stamped custody or payment finality.
What's next
- 0–3 months: two fresh RPCs, real pilot payments, accounting export, commercial engine, independent security audit, written U.S. legal scope, 10 design-partner merchants
- 3–9 months: native self-custody mobile wallet, Face ID, two-device recovery
- 9–18 months: multi-location POS, integrations, second allowlisted network, NFC only after entitlement + security approval
- 18–36+ months: hardened terminals and a validator-network thesis under a separate threat model
Ask: design-partner merchants, accounting + regulated stablecoin partners, and capital to fund product/security, U.S. legal work, audits, and early distribution.
Why it matters
Tapyra is a merchant software for a world where stablecoins settle like cash — with receipts that reconcile, verification that fails closed, and a custody model founders and regulators can defend.
Tap. Pay. Proven.
Built With
- cloudflare
- cosmjs
- cosmos
- expo.io
- hono
- keplr
- noble
- pgtap
- postgresql
- react-native
- supabase
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.