Overview
Crypto is hard to actually accept as a business, volatility, custody risk, and clunky tooling. LitVMPay is a non-custodial payment gateway on LitVM that lets a merchant accept any token a customer holds, while getting paid in the one they actually want to keep (a stablecoin or zkLTC) no swapping, no middleman holding funds, no platform fees. I designed and built the entire product: the brand, both web apps, the on-chain contracts, the infrastructure, and the security hardening.
Role & scope
Solo designer & ai assisted full-stack+ smart-contract engineer. Product design, brand identity, UX/UI, frontend, backend, Solidity contracts, DevOps, security, and monitoring, the whole thing.
What I designed
Brand identity: logo/wordmark, teal-and-navy system, and a cohesive visual language across app, checkout, and email.
Transactional emails: welcome + magic-link templates built as bulletproof, email-client-safe HTML (Gmail/Outlook strip web fonts and inline SVG — designed around those constraints).
Social share cards: on-brand Open Graph / Twitter images.
What I engineered with claude and codex
Monorepo (pnpm workspace): two Next.js 16 (App Router, Turbopack) apps: dashboard + checkout — plus shared packages (UI kit, types, chain layer, mock data).
Marketing landing page: hero, an animated "settlement flow" diagram (tokens funnel into the hub, settle out as one), FAQ, and a fully responsive mobile experience with tuned micro-interactions (GSAP motion).
Merchant dashboard: invoicing, customers, settings, and a one-time onboarding flow, with attention to empty states, loading skeletons, and mobile layout.
Hosted checkout: a clean pay experience with scannable branded QR codes (logo-in-QR, exportable "amount + QR + powered-by" image).
Authentication: three sign-in methods via BetterAuth: Google OAuth, passwordless magic links, and Sign-In With Ethereum (SIWE / wallet), with deterministic friendly handles generated for wallet users.
Backend: Next API routes over Neon Postgres (node-postgres), idempotent schema management, per-user data scoping, and rate limiting (anti-abuse on auth + faucet).
Web3: wallet connection and on-chain reads/writes with wagmi/viem, integrated against the LitVM chain.
Real on-chain payments: invoices are DB-backed and settled/verified on-chain (non-custodial: funds go wallet-to-wallet, never through the platform).
Test-token faucet: mints test tokens + drips gas, rate-limited, with low-balance operational alerts.
Smart contracts
Solidity 0.8.24 with OpenZeppelin (Ownable, ReentrancyGuard, SafeERC20), built and tested with Hardhat.
PaymentRegistry + a FixedRateSwapRouter designed with a phased architecture: real same-token settlement now, with the swap layer already scaffolded so mainnet is a config flip rather than a rewrite. Hardened: chain-id guards, registry-gated swap calls, zero-address checks, and a full owner-key rotation off a compromised deployer key.
Security & production-readiness
Worked through a structured security-hardening roadmap; ran Slither static analysis and dependency audits. Non-custodial by design, strict Content-Security-Policy + security headers, server-only database access (no client-direct DB), and secrets isolation. Sentry error monitoring wired into the live app.
Infrastructure & DevOps
Deployed on Railway as two auto-deploying services. Neon Postgres, custom domains + SSL, and environment-per-service config.
Tech stack
Next.js 16 · React · TypeScript · Tailwind CSS · GSAP · BetterAuth · Neon Postgres · wagmi / viem · Solidity · Hardhat · OpenZeppelin · Sentry · Railway · pnpm monorepo
