monad/scaffold

Monad Scaffold

monadguide🏛️ Officialconfidence highhealth 100%
v1.0.0·by therealharpaljadeja·Updated 3/23/2026

Checklist

[ ] - Plan architecture and folder structure [ ] - Decide which components of the app will be onchain [ ] - Scaffold the project [ ] - Initialize git repo (git init && git add -A && git commit -m "initial commit") [ ] - Don't build exisiting contracts from scratch, use Openzeppelin contracts where ever possible [ ] - Build smart contracts [ ] - Deploy smart contracts — fetch wallet/ skill, then deploy using the agent wallet and Safe multisig. This must happen before building the frontend because the frontend needs the deployed contract addresses. [ ] - Build frontend using the deployed contract addresses. Use Wagmi, Next.js and Shadcn if user has no preferences [ ] - Commit all changes to git (git add -A && git commit) [ ] - Deploy frontend to Vercel — fetch vercel-deploy/ skill, then run the deploy script (bash deploy.sh web/)

Scaffolding

Before jumping into writing code, use plan mode to plan the architecture of the app.

FolderComponent
web/Web app frontend, backend routes also in case of Next.js or similar app
contracts/Smart contracts (Foundry project)

Decide what to put onchain

Put it onchain if it involves:

  • Trustless ownership — who owns this token/NFT/position?
  • Trustless exchange — swapping, trading, lending, borrowing
  • Composability — other contracts need to call it
  • Censorship resistance — must work even if your team disappears
  • Permanent commitments — votes, attestations, proofs

Keep it offchain if it involves:

  • User profiles, preferences, settings
  • Search, filtering, sorting
  • Images, videos, metadata (store on IPFS, reference onchain)
  • Business logic that changes frequently
  • Anything that doesn't involve value transfer or trust

Don't try to build smart contracts from scratch

Use OpenZeppelin contracts where possible. Install with:

forge install OpenZeppelin/openzeppelin-contracts

Use Wagmi in Frontend

Use wagmi v3 for smart contract interactions. Use RainbowKit for wallet connection (see wallet-integration skill).

Use useSendTransactionSync where it can be used

Monad supports eth_sendRawTransactionSync — use this for faster UI feedback.

Deploy to Vercel

Ensure all files are committed before deploying. Fetch the vercel-deploy/ skill.

Skill URL: https://monskills.vercel.app/scaffold/SKILL.md