Blockchain
ChainPay
Smart-contract payments with transparent on-chain settlement

Overview
ChainPay is a blockchain payment app focused on secure, transparent transfers powered by smart contracts rather than opaque payment intermediaries.
It explores how everyday payment UX can map onto decentralized settlement — users initiate a transfer, the contract enforces the rules, and the ledger records the outcome.
Useful as a portfolio piece for payment/Web3 interviews and as a sandbox for experimenting with Solidity + Web3.js payment flows.
My Role
Designed and implemented the payment smart contracts, JavaScript/Web3.js client integration, and the deployed demo experience on Vercel.
Tech Stack
Key Features
- Smart-contract-enforced payment transfers
- Transparent on-chain transaction records
- Web3.js client for wallet-connected payments
- Clear success/failure feedback after each transfer
- Deployed demo suitable for live walkthroughs
- Focused payment workflow without unnecessary product noise
Challenges & Solutions
Challenge
Making payment confirmation UX understandable for users who aren't used to gas fees and pending states.
How I solved it
Added explicit pending → confirmed messaging and disabled repeat submits until the prior transaction resolved.
Challenge
Preventing accidental double-sends when users clicked pay multiple times under latency.
How I solved it
Locked the action button during in-flight transactions and keyed UI updates off transaction hashes.
Challenge
Keeping Solidity payment logic minimal while still demonstrating a real end-to-end flow.
How I solved it
Scoped the contract to core transfer semantics and invested polish in the client layer where interview storytelling is clearest.