The internet's cat has its own token. 10B supply. 5,000 Founder slots. Built on Base.
| Item | Detail |
|---|---|
| Network | Base Mainnet (Chain ID: 8453) |
| Mint Price | 0.0011 ETH / slot |
| Total Slots | 5,000 |
| Max per Wallet | 30 slots |
| Per Slot | 1 NFT + 1,000,000 $WIKI |
| Total Supply | 10,000,000,000 $WIKI |
wikicat/
├── contracts/
│ ├── WikiToken.sol # ERC20 — $WIKI token
│ ├── FounderNFT.sol # ERC721 — Founder Pass NFT
│ └── MintContract.sol # Mint logic (price, cap, per-wallet limit)
├── scripts/
│ ├── deploy.ts # Deploy all 3 contracts + wire them up
│ └── verify.ts # Verify on Basescan
├── src/
│ ├── app/
│ │ ├── layout.tsx # Root layout + Web3Provider
│ │ ├── page.tsx # Main landing page
│ │ └── api/
│ │ ├── mint/ # Backend relayer endpoint
│ │ ├── status/ # Live mint status
│ │ └── user-minted/ # Per-wallet stats
│ ├── components/ # UI components
│ ├── lib/
│ │ ├── contracts.ts # ABIs + contract addresses
│ │ └── wagmi.ts # Wagmi + RainbowKit config
│ └── providers/
│ └── Web3Provider.tsx # Wagmi + RainbowKit + QueryClient
├── hardhat.config.ts
├── .env.example
└── README.md
npm installcp .env.example .envEdit .env:
NEXT_PUBLIC_RPC_URL=https://mainnet.base.org
NEXT_PUBLIC_CHAIN_ID=8453
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=<get from cloud.walletconnect.com>
PRIVATE_KEY=<your deployer wallet private key>
TREASURY_ADDRESS=<treasury wallet>
FOUNDER_ADDRESS=<founder wallet>
BASESCAN_API_KEY=<get from basescan.org>Security: Never commit
.envto git. The.gitignorealready excludes it.
npm run compilenpm run deploy:baseSepoliaCheck the output — it will print all 3 contract addresses and the env vars to add.
npm run deploy:baseAfter deploy, copy the printed env vars into your .env file:
NEXT_PUBLIC_WIKI_TOKEN_ADDRESS=0x...
NEXT_PUBLIC_FOUNDER_NFT_ADDRESS=0x...
NEXT_PUBLIC_MINT_CONTRACT_ADDRESS=0x...npm run verify:baseCall setMintActive(true) on the MintContract through Basescan's write interface or via a script:
npx hardhat console --network base
# then:
const contract = await ethers.getContractAt("MintContract", "<MINT_CONTRACT_ADDRESS>")
await contract.setMintActive(true)npm run devnpx vercel --prodThen add your environment variables in Vercel dashboard:
NEXT_PUBLIC_RPC_URLNEXT_PUBLIC_WALLETCONNECT_PROJECT_IDNEXT_PUBLIC_WIKI_TOKEN_ADDRESSNEXT_PUBLIC_FOUNDER_NFT_ADDRESSNEXT_PUBLIC_MINT_CONTRACT_ADDRESSPRIVATE_KEY(for the relayer API)TREASURY_ADDRESS
- Push this repo to GitHub
- Go to vercel.com → Import Project
- Connect your GitHub repo
- Add environment variables in Vercel settings
- Deploy
| Allocation | % | Amount |
|---|---|---|
| Founder Mint | 50% | 5,000,000,000 |
| LP Pool | 49% | 4,900,000,000 |
| Treasury | 0.8% | 80,000,000 |
| Team | 0.2% | 20,000,000 |
The LP allocation (4.9B) is minted by the owner when adding liquidity to a DEX.
| Endpoint | Method | Description |
|---|---|---|
/api/status |
GET | Live mint stats (slots, ETH, progress) |
/api/user-minted?address=0x... |
GET | Per-wallet stats |
/api/mint |
POST | Backend relayer (requires PRIVATE_KEY) |
# Get mint status
curl https://your-domain.vercel.app/api/status
# Get wallet stats
curl "https://your-domain.vercel.app/api/user-minted?address=0xYourWallet"- Frontend: Next.js 14 (App Router), TypeScript, Tailwind CSS
- Web3: Wagmi v2, viem, RainbowKit, WalletConnect
- Contracts: Solidity 0.8.24, OpenZeppelin v5, Hardhat
- Chain: Base Mainnet (Coinbase L2 on Ethereum)
- Deploy: Vercel
MIT