Verified human survey platform on World ID.
- Online survey data is broken. Bots flood responses, people lie about age and gender. World Rainbow only lets World ID verified humans answer surveys -- demographics come from verification, not self-report.
- Pitch: https://worldcoin-rainbow.vercel.app/pitch
- Next.js 14 + Tailwind CSS
- World MiniKit SDK (Verify, Pay, Wallet Auth)
- Google Translate API
- World Notifications API
- Vercel deploy
- MongoDB Atlas
- Deploy(Remix): WorldChain Testnet
- https://www.alchemy.com/faucets/world-chain-sepolia
- https://worldchain-sepolia.bridge.alchemy.com
- https://cloud.google.com/application/web3/faucet/ethereum/sepolia
- https://superbridge.app/?fromChainId=11155111&toChainId=4801 -> 에서 Sepolia -> World Chain Sepolia로 브릿지
- 뒤늦게 알았다(여기서 받으면 훨 쉬움): https://www.l2faucet.com/
- https://remix.ethereum.org/#lang=en&optimize&runs=200&evmVersion&version=soljson-v0.8.31+commit.fd3a2265.js
- deployed contract address (worldchain-sepolia testnet): 0x265f19e70eDb41fb909Da4499F3A054DF514B365
- 배포된 컨트랙트 확인 (sepolia world-scan): https://sepolia.worldscan.org/address/0x265f19e70eDb41fb909Da4499F3A054DF514B365
- World ID Orb verification (1 person = 1 account)
- Auto demographic matching (country, gender, age, language, occupation, interests)
- 7 question types (single/multiple choice, short/long text, star rating, yes-no, likert)
- Auto translation (Google Translate) -- write in Korean, get answers from Brazil in Portuguese
- WLD/USDC rewards for respondents (equal or random distribution)
- Push notifications when matching surveys appear
- ZKP privacy -- verified demographics without revealing identity
5% platform fee. 95% goes to respondents.
- Webview debug tool: https://github.com/liriliri/eruda
White glassmorphism UI with soft rainbow gradient background.

- Background: light pastel rainbow gradient (
#fef2f4->#f0f1fa->#edf8fa->#f4f9ee->#fefce8) - Cards: frosted glass (white 70% opacity + blur 20px)
- Accent: soft purple
#8b5cf6 - Buttons: purple-pink gradient (
#c4b5fd->#8b5cf6->#f0abfc) - Tags: light purple bg with purple text
- Progress bars: purple-pink gradient
.env.localsetting:# World Developer Portal에서 발급받은 앱 아이디 값 APP_ID=app_45c8fa8ae837f8e927e16b2d889af7bd NEXT_PUBLIC_APP_ID=app_45c8fa8ae837f8e927e16b2d889af7bd # World Developer Portald에서 발급받은 API Key 값 DEV_PORTAL_API_KEY="" # 다국어 번역을 위한 Google Translate API Key 값 GOOGLE_TRANSLATE_API_KEY="" # 데이터 스토리지 (MongoDB Atlas 사용) MONGODB_URI="" # 유저 설문 등록 금으로 받아놓은 코인을 컨트랙트에 저장(배포)하기 위한 지갑 주소 및 비밀키 # NEXT_PUBLIC_PAYMENT_ADDRESS=0x823fd7f91fdb3fdb5c40601ff24e40cdf05bd987 #월드(내지갑주소) NEXT_PUBLIC_PAYMENT_ADDRESS=0x46AC9801B106A4ab1EF1BFC67B442C9c44Dc9C96 #월드체인세포리아메마 PLATFORM_WALLET_PRIVATE_KEY="" #월드체인세포리아메마비밀키 # 월드체인 RPC WORLD_CHAIN_RPC=https://worldchain-mainnet.g.alchemy.com/public # 배포된 컨트랙트 주소 NEXT_PUBLIC_ESCROW_ADDRESS=0x265f19e70eDb41fb909Da4499F3A054DF514B365 NEXT_PUBLIC_NETWORK=testnet- start
npm install npm run dev
-
[verify] FAILED: 400 {"code":"max_verifications_reached","detail":"This person has already verified for this action.","attribute":null,"app_id":"app_45c8fa8ae837f8e927e16b2d889af7bd"}
- 이미 인증되었기 때문에 400오류가 떴다. (중복 인증 불가)
- 이미 인증한 사람이면 "이미 인증됨"으로 통과시켜서 해결
-
설문조사 등록시 수수료 5%가 따로 나가지 않고 같이 나감
const perPerson = (parseFloat(rewardAmount) / parseInt(targetCount)) * 0.95이미 이렇게 돼있음- 찾아보니 현재 테스트 하고 있는 to 주소가 하나라서 한 트랜잭션에 두 곳으로 나눠 보내는 게 안 된다고 하여서, 실제로 두 번 나눠 보내려면 MiniKit.pay()를 두 번 호출해야 하는데 ux가 별로라고 한다.
- 어차피 실제 유저가 사용하면 같을 일 없으니까 다른 지갑으로 테스트 하면 정상적으로 나옴
- ~2Week: 다국어 언어 전체 추가 (설문 번역은 google translate 통하여 자동으로 되므로 플랫폼 언어 세팅만 더 추가하면 가능)
- ~1Month: 정산 로직 smart-contract 처음에 worldchain testnet에 했다가 -> 실제 월드코인으로 우리 플랫폼 결제 하고 싶어서 바꿨는데 -> 테스트넷이랑 호환 안 돼서 메인넷에 배포하려 했으나 -> 이더가 없어서 일단 테스트넷에 배포만 해둔 채로 지갑으로 이동하도록 했는데 -> 메인넷에 컨트랙트 배포 해서 연동하기
- ~2Month: 다크모드 추가 및 서비스 예외처리 등 고도화 작업
-
- 신고시스템? 답변을 평가하는 시스템을 만들어서 관리자가 보고 이건 쫌 아니다 싶으면 경고시스템을 넣어서 n회 경고이면 n일간 설문조사 금지 << 와 같은 작업 등
-
- ~3Month: 모인 유저 설문 5%수수료 수익들을 기반으로 이벤트 진행
- 팀원 모집?

