A Next.js app + single smart contract where users lock tokens on-chain for commitments (study, fitness, savings, etc.) and can only claim their stake after the deadline passes.
A Next.js app + single smart contract where users lock tokens on-chain for commitments (study, fitness, savings, etc.) and can only claim their stake after the deadline passes.
"Put money where your promise is."
Users commit to something meaningful, stake real tokens, and can only withdraw after time passes. The blockchain ensures accountability—no shortcuts, no excuses.
Lock tokens (MNT) on Mantle testnet
Set your goal (study, gym, savings, career, etc.)
Choose duration: 7 days → 365 days
Transaction confirmed on-chain
Smart contract holds your tokens
Real-time countdown timer
View all your active commitments
Earn credibility
Only available after lock period ends
One-click claim to withdraw tokens
Prove you kept your promise
Celebrate your commitment
Next.js 16 - React framework
Tailwind CSS - Styling
ethers.js - Web3 interactions
wagmi - Wallet management
RainbowKit - Beautiful wallet UI
Solidity 0.8.20
Mantle Testnet - Deployment network
EVM-compatible
Network: Mantle Testnet (Chain ID: 5003)
Contract Address: 0xB6568c40822689b58b1e289a26e61525fD2e325C
RPC: https://rpc.testnet.mantle.xyz
proofvault/
├── app/ # Root layout & pages
│ ├── layout.tsx # Root layout
│ ├── globals.css # Global styles
│ └── page.tsx # Home page (in src/)
├── src/
│ ├── app/
│ │ ├── page.jsx # Home page
│ │ ├── create/
│ │ │ └── page.jsx # Create commitment
│ │ └── vault/
│ │ └── page.jsx # View commitments
│ ├── components/
│ │ ├── WalletConnect.jsx # Wallet connection
│ │ ├── CreateForm.jsx # Create form
│ │ ├── CommitmentCard.jsx # Commitment display
│ │ └── CountdownTimer.jsx # Timer display
│ ├── contracts/
│ │ ├── ProofVault.sol # Smart contract
│ │ ├── ProofVaultABI.js # Contract ABI
│ │ └── contractConfig.js # Contract config
│ └── utils/
│ ├── ethers.js # Web3 utilities
│ └── constants.js # App constants
├── package.json
├── tsconfig.json
├── postcss.config.mjs
├── tailwind.config.ts
└── README.md