Frontend (numpay-dapp)
| Area | Choice |
|---|---|
| Framework | React 18 + TypeScript, built with Vite 5 |
| Styling | Tailwind CSS, shadcn/ui (Radix primitives), Geist font |
| Routing | React Router 6 |
| Server state | TanStack Query |
| Login | @web3auth/modal v10, network sapphire_mainnet |
| Smart accounts | @zerodev/sdk, @zerodev/ecdsa-validator |
| Chain client | viem |
| NEAR | @hot-labs/near-connect (wallet selector), FastNEAR RPC |
| PWA | vite-plugin-pwa (Workbox) |
| Hosting | Vercel, app.numpay.app |
Backend (cash-tide-backend)
| Area | Choice |
|---|---|
| Runtime | Node.js + TypeScript |
| HTTP | Express 5 |
| Database | PostgreSQL via Prisma 6 |
| Validation | zod |
| Token verification | jose (remote JWKS, ES256) |
| Security | helmet, cors, express-rate-limit |
| Chain | viem, @zerodev/sdk, @zerodev/ecdsa-validator |
| Crypto at rest | Node crypto, AES-256-GCM |
| Hosting | Linux server behind an nginx reverse proxy, api.numpay.app |
On-chain
| Item | Value |
|---|---|
| Network | Base mainnet, chain ID 8453 |
| Token | Native USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (6 decimals) |
| Account standard | ERC-4337 |
| EntryPoint | v0.7 0x0000000071727De22E5E9d8BAf0edAc6f37da032 |
| Smart account | ZeroDev Kernel v3.3 with ECDSA validator, index 0 |
| Bundler / paymaster | ZeroDev |
Third-party services
| Service | Used for |
|---|---|
| Web3Auth (MetaMask Embedded Wallets) | OTP login and key management |
| ZeroDev | Bundler and gas sponsorship on Base |
| Pimlico | Bundler and gas sponsorship on Elysium testnet |
| Onramper | Card → USDC on Base |
| NEAR Intents (1Click) | NEAR USDC → Base USDC |

