Inspiration
Access to high-quality education is still limited in many parts of the world due to payment barriers. Many international platforms support only global payment methods like credit cards or PayPal, which many students in developing regions do not have.
At the same time, the Polkadot ecosystem provides fast, secure, low-fee transactions and a vision of global interoperability. That sparked a question:
What if I could use Polkadot to pay for digital education anywhere in the world?
Mela Pay was born from this idea, enabling students to buy courses (starting with edX) using DOT directly from their Polkadot wallets, instantly and without barriers.
What It Does
Mela Pay is a Web3 payment gateway that converts DOT from the Polkadot network into USD for purchasing online courses.
Before using the platform, users must install the Polkadot.js browser extension and connect their wallet: Polkadot.js Extension
Core features
Connect any Polkadot wallet (Polkadot.js extension, Nova integration planned)
Purchase courses using DOT
Automatic currency conversion (DOT to USD)
Secure on-chain transactions using Polkadot API
Real-time transaction confirmation
Clean, simple checkout experience for education platforms
In short, Mela Pay allows students to buy courses with cryptocurrency easily, safely, and globally.
How I Built It
I built Mela Pay using a modern Web3 stack.
Frontend
Next.js + React
Tailwind CSS for fast, responsive UI
Polkadot.js extension-dapp for wallet integration
React Context API for global state management
Backend
Node.js / Express
Polkadot.js API for signing and sending transactions
Currency conversion service for live DOT/USD pricing
Blockchain
Polkadot RPC (wss://rpc.polkadot.io) for chain connection
web3Enable, web3Accounts, web3FromAddress for wallet access
api.tx.balances.transfer() for secure on-chain transfers
Before interacting with any payment feature, users are required to install the Polkadot.js extension and connect their wallet to enable transactions: Polkadot.js Extension
Mathematical Conversion
DOT to USD:
[ \text{DOT_required} = \frac{\text{USD_Price}}{\text{DOT_USD_Rate}} ]
DOT to plancks:
[\text{plancks} = \text{DOT} \times 10^{12}]
These formulas ensure accurate and consistent payment amounts.
Challenges I Ran Into
Wallet compatibility
Nova Wallet does not directly sync with Polkadot.js extension. I had to design for:
Desktop extension flow
Mobile wallet
Next.js SSR vs CSR issues
Polkadot.js relies on the window object, which does not exist in server-side rendering. This produced:
ReferenceError: window is not defined
I solved this by:
Lazy-loading Polkadot wallet functions
Ensuring wallet interactions run only on the client side
Transaction signing errors
I handled:
Injected signature providers
web3FromAddress signer setup
Correct Polkadot payload encoding
DOT price volatility
Real-time exchange rate fetching was required to ensure accurate payment amounts.
User experience
Designing Web3 payments to feel like a normal checkout experience required significant UX planning.
Accomplishments That I'm Proud Of
Integrated real Polkadot wallets into a functioning payment flow
Sent live on-chain transactions directly from the browser
Successfully converted DOT to USD amounts during checkout
Built a reusable Polkadot React Context
Created a working prototype that demonstrates Web3 payments for education
What I Learned
Deep knowledge of Polkadot.js APIs
Handling Web3 libraries inside SSR frameworks like Next.js
Blockchain transaction signing flow
Designing simple and reliable Web3 user experiences
Understanding the real-world use cases of interoperable blockchains
What's Next for Mela Pay
On-chain DOT to stable conversion
Automatic conversion to reduce volatility.
Direct integration with edX and other course platforms
A plug-and-play Web3 payment widget.
Smart contract escrow
Funds are released only after course enrollment is confirmed.
Expansion into a global education payments platform
Long-term vision: making education accessible to millions using blockchain.
Built With
- express.js
- javascript
- mongodb
- next.js
- node.js
- polkadot.js

Log in or sign up for Devpost to join the conversation.