Thanks to visit codestin.com
Credit goes to github.com

Skip to content

wkalidev/dailydrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DailyDrop πŸ”₯

DailyDrop Logo

Check in daily on-chain. 7-day streak = 10 DROP tokens + G$ rewards.

Compatible MiniPay βœ… | Compatible Farcaster βœ… | Celo + Base βœ… | Proof of Presence βœ…


Live

πŸ”— App : https://dailydrop-five.vercel.app πŸ† Leaderboard : https://dailydrop-five.vercel.app/leaderboard πŸ›‘οΈ Shield API : https://dailydrop-five.vercel.app/api/verify πŸ€– MCP Server : https://dailydrop-five.vercel.app/api/mcp πŸ€– Agent Card : https://dailydrop-five.vercel.app/.well-known/agent-card.json πŸ“„ OpenAPI : https://dailydrop-five.vercel.app/.well-known/openapi.json πŸ“¦ SDK : npm i @dailydrop/shield πŸ™ GitHub : https://github.com/wkalidev/dailydrop


What is DailyDrop?

DailyDrop is two things at once:

  1. A daily check-in app β€” users check in on-chain every day, build a 7-day streak, and earn DROP tokens + G$ rewards.

  2. A Proof of Presence Protocol β€” DailyDropShield is an open infrastructure layer that any project can use to verify real humans by their on-chain streak. No KYC. No passport scan. Just behavioral proof.

A streak on-chain can't be faked retroactively. If a wallet showed up every day, it's a real human.


How it works

  1. Connect wallet (MiniPay auto-connects, or MetaMask/RainbowKit)
  2. Click Check-in once per day (1 TX on-chain)
  3. Build a 7-day consecutive streak
  4. Claim 10 DROP tokens 🎁 + G$ bonus 🌱
  5. Repeat!

πŸ›‘οΈ DailyDropShield β€” Proof of Presence

Any project can verify real humans using the free public API or npm SDK:

REST API (free, no auth)

GET https://dailydrop-five.vercel.app/api/verify?address=0xABC&minStreak=7
{
  "address": "0xABC...",
  "passed": true,
  "streak": { "current": 12, "celo": 12, "base": 0 },
  "badges": { "level": 1, "label": "πŸ₯‰ Weekly", "weekly": true },
  "shield": "0x24eFf9bdE979D6dccC869178F353D663bC8A6983"
}

npm SDK

npm install @dailydrop/shield
import DailyDropShield, {
  CELO_DAILYDROP,
  BASE_DAILYDROP,
  SHIELD_ADDRESS,
  STREAK_MASTER_ADDRESS,
  STREAK_NFT_ADDRESS,
} from "@dailydrop/shield"

const shield = new DailyDropShield()
const isHuman = await shield.isHuman("0xABC...", 7)
const streak  = await shield.getStreak("0xABC...")
const badge   = await shield.getBadge("0xABC...")

// Batch verify for airdrop filtering
const results = await shield.verifyBatch(["0xABC...", "0xDEF..."], 7)

Use Cases

Use Case minStreak
Airdrop sybil filter 7
DAO voting weight 30
NFT allowlist 7
DeFi APY boost 14

Smart Contracts

Celo Mainnet

Contract Address
DailyDrop 0xd8Cc2a639a8D4e7A75a5B41C28606712e4fDf70b
DailyDropShield 0x24eFf9bdE979D6dccC869178F353D663bC8A6983

Base Mainnet

Contract Address
DailyDrop 0x974fB504172f2aABbecc698Ebf137202a5E4e495
StreakMaster 0x038F496eCf99ecA5959A40493C96670Ea8a14345
StreakNFT 0xbBa5865b3E3A5033730f851d555cc922B74B25Fa

G$ Integration (GoodBuilders Season 4)

DailyDrop integrates GoodDollar G$ as bonus rewards:

  • Streak 7 days β†’ 100 G$ bonus
  • Streak 30 days β†’ 500 G$ bonus
  • Streak 100 days β†’ 2000 G$ bonus

G$ token on Celo: 0x62B8B11039FcfE5aB0C56E502b1C372A3D2a9C7A


Agent Score (8004scan)

Category Score
Engagement 13/100 (2 reviews)
Service 100/100 β€” MCP + OASF + A2A
Compliance 100/100 β€” full metadata
x402 enforced on verify_batch
Total targeting 90+/100

Agent URL: https://8004scan.io/agents/celo/9421


x402 Payment (verify_batch)

verify_batch (up to 100 wallets) requires an HTTP 402 payment. When called without an X-Payment header the server returns:

HTTP 402
X-Payment-Required: {"scheme":"exact","network":"base","maxAmountRequired":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",...}

Pay 0.01 USDC on Base to 0x038F496eCf99ecA5959A40493C96670Ea8a14345, then retry with the X-Payment header. All other tools are free.


OpenAPI / OASF

Full API spec at /.well-known/openapi.json (OpenAPI 3.1.0).

Declares x402 security scheme, all endpoints, and OASF metadata for agent-scanner compliance.


Performance

  • Inline critical CSS β€” above-the-fold styles inlined in <head> for immediate paint (no FOUC)
  • Fonts: self-hosted at build time via next/font/google β€” eliminates render-blocking Google Fonts request
  • Viewport: user zoom enabled (accessibility compliant, WCAG 1.4.4)
  • CLS: protocol stats section always reserves DOM space (skeleton while loading) to prevent layout shift
  • Bundle: optimizePackageImports for wagmi / viem / RainbowKit tree-shaking

Stack

Layer Tech
Smart Contracts Solidity 0.8.20, OpenZeppelin ERC20
Frontend Next.js 14, TypeScript
Web3 wagmi v2, viem, RainbowKit
Shield SDK TypeScript, viem (@dailydrop/shield v1.2.0)
AI Coach Claude Haiku 4.5 (Anthropic)
Chains Celo Mainnet + Base Mainnet
Deploy Vercel (frontend), Hardhat (contracts)
Agent MCP 2024-11-05, A2A, OASF, x402

Installation

git clone https://github.com/wkalidev/dailydrop
cd dailydrop
npm install
cd frontend && npm install

Environment Variables

NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=...
NEXT_PUBLIC_CDP_PROJECT_ID=...
NEXT_PUBLIC_CELO_CONTRACT_ADDRESS=0xd8Cc2a639a8D4e7A75a5B41C28606712e4fDf70b
NEXT_PUBLIC_BASE_CONTRACT_ADDRESS=0x974fB504172f2aABbecc698Ebf137202a5E4e495
NEXT_PUBLIC_SHIELD_ADDRESS=0x24eFf9bdE979D6dccC869178F353D663bC8A6983
NEXT_PUBLIC_STREAK_MASTER_ADDRESS=0x038F496eCf99ecA5959A40493C96670Ea8a14345
NEXT_PUBLIC_STREAK_NFT_ADDRESS=0xbBa5865b3E3A5033730f851d555cc922B74B25Fa
CELOSCAN_API_KEY=...
BASESCAN_API_KEY=...
ANTHROPIC_API_KEY=...

Deploy Contracts

npm run deploy:celo   # Deploy DailyDrop + DailyDropShield on Celo
npm run deploy:base   # Deploy DailyDrop on Base

MiniPay

Auto-detects MiniPay via window.ethereum.isMiniPay:

  • Auto wallet connection via injected provider (no modal shown)
  • Forces Celo mainnet on every connection via switchChain
  • Connect button hidden when MiniPay is detected
  • Graceful connection error recovery with retry button
  • Gas fees in cUSD
  • Mobile-optimized UI (360Γ—640 px minimum viewport, user zoom enabled)
  • Terms / Privacy / Support links open target="_self" (in-app, no external tab)

Test: https://dailydrop-five.vercel.app


API Reference

GET /api/verify?address=0x...&minStreak=7

Proof of Presence verification. Reads streaks from both Celo and Base chains.

{
  "address": "0xABC...",
  "passed": true,
  "minStreak": 7,
  "streak": { "current": 12, "bestChain": "celo", "celo": 12, "base": 0 },
  "checkins": { "total": 36, "canCheckIn": false, "canClaim": false, "nextCheckIn": 1780613801 },
  "badges": { "level": 1, "label": "πŸ₯‰ Weekly", "weekly": true, "monthly": false, "century": false },
  "shield": "0x24eFf9bdE979D6dccC869178F353D663bC8A6983",
  "meta": { "verifiedAt": "2026-06-22T00:00:00.000Z", "celoscan": "...", "basescan": "..." }
}

CORS: fully open (Access-Control-Allow-Origin: *). Cache: 60s.


GET /api/stats

Protocol-wide analytics. Fetches transaction counts from Celoscan + Basescan. Cached 5 minutes.

{
  "totalCheckIns": 842,
  "uniqueWallets": 301,
  "celoWallets": 190,
  "baseWallets": 145
}

Environment variables: CELOSCAN_API_KEY, BASESCAN_API_KEY


GET /api/leaderboard

Returns wallet addresses sorted by activity, sourced from Etherscan V2 API with Basescan V1 fallback. Includes celoAddresses and baseAddresses arrays for chain-filter UI.


GET /api/agent?address=0x...

AI streak coach powered by Claude Haiku 4.5. Returns personalized motivation, action tip, and on-chain data.

{
  "streak": 5,
  "totalCheckIns": 12,
  "canCheckIn": true,
  "canClaim": false,
  "riskLevel": "low",
  "message": "5 days in β€” 2 more to claim 10 DROP. You're almost there!",
  "tip": "Check in now while you remember β€” consistency beats motivation.",
  "aiPowered": true
}

Environment variable: ANTHROPIC_API_KEY (optional β€” falls back to deterministic heuristics)


GET/POST /api/mcp

MCP Server (protocol 2024-11-05). Tools: verify_streak, get_profile, verify_batch (x402), get_stats.

# Discovery
GET https://dailydrop-five.vercel.app/api/mcp

# Tool call (free)
POST https://dailydrop-five.vercel.app/api/mcp
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"verify_streak","arguments":{"address":"0xABC...","minStreak":7}}}

# verify_batch β€” requires X-Payment header (0.01 USDC on Base)
POST https://dailydrop-five.vercel.app/api/mcp
X-Payment: <signed-payment-proof>
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"verify_batch","arguments":{"addresses":["0xABC...","0xDEF..."],"minStreak":7}}}

GET /.well-known/agent-card.json

A2A AgentCard v1.2.0 β€” 5 skills: verify_streak, get_profile, verify_batch, get_leaderboard, get_stats. Full OASF metadata, x402 pricing, and authentication scheme declared.

GET /.well-known/openapi.json

OpenAPI 3.1.0 spec for all Shield API endpoints. Declares x402 security scheme. Used by OASF-compatible agent scanners.


GET /api/frame/image?address=0x...

Returns a 1200Γ—630 SVG image for Farcaster Frames. Personalized when address is provided (shows live streak, color-coded). Generic brand image when no address given.


Advanced Architecture

StreakMaster (Base)

Cross-chain source of truth. Receives check-ins from Celo, Base, and Stacks via authorized relayers. Maintains an on-chain leaderboard (top 10), streak tiers, and triggers rewards.

Address (Base Mainnet): 0x038F496eCf99ecA5959A40493C96670Ea8a14345

DailyDropShield (Celo)

Proof of Presence verification layer. Any project can call verify(address, minStreak) to check if an address is an active human. Free. No KYC.

Address (Celo Mainnet): 0x24eFf9bdE979D6dccC869178F353D663bC8A6983

REST API: GET /api/verify?address=0x...&minStreak=7

Note: verify() is nonpayable (not view) because it caches results on-chain. Use verifyView() for gas-free reads.

StreakNFT (Base)

Soulbound ERC-721 NFT with 100% on-chain SVG metadata. Automatically updates on each check-in. Non-transferable.

Address (Base Mainnet): 0xbBa5865b3E3A5033730f851d555cc922B74B25Fa

Relayer

Next.js API route (/api/relayer) that receives check-in notifications and calls StreakMaster.updateStreak() on Base. Requires RELAYER_SECRET for authentication and RELAYER_PRIVATE_KEY for signing.

The Farcaster Frame (/api/frame) uses untrustedData β€” Farcaster signature verification is not yet implemented. See // TODO comment in the route for production hardening.


Proof of Ship β€” Celo

  • βœ… DailyDrop deployed Celo + Base mainnet
  • βœ… DailyDropShield deployed Celo mainnet
  • βœ… StreakMaster + StreakNFT deployed Base mainnet
  • βœ… Public REST API live β€” /api/verify, /api/stats, /api/leaderboard, /api/agent
  • βœ… MCP Server live β€” /api/mcp (x402 enforced on verify_batch)
  • βœ… A2A AgentCard v1.2.0 β€” /.well-known/agent-card.json (full metadata, x402, OASF)
  • βœ… OpenAPI 3.1.0 β€” /.well-known/openapi.json (x402Payment scheme, OASF)
  • βœ… @dailydrop/shield v1.2.0 published on npm
  • βœ… MiniPay compatible (auto-detect, force Celo, no modal, reconnect on failure, target="_self" links)
  • βœ… Farcaster Mini App (farcaster.json + frame endpoint)
  • βœ… G$ integration (GoodBuilders Season 4)
  • βœ… Leaderboard (Celoscan + Basescan, live on-chain)
  • βœ… AI streak coach (Claude Haiku 4.5 + deterministic fallback)
  • βœ… PWA (manifest + service worker)
  • βœ… Inline critical CSS shell for fast first paint
  • βœ… Fonts self-hosted via next/font (no render-blocking external requests)
  • βœ… Accessible viewport (user zoom enabled, WCAG 1.4.4 compliant)

License

MIT Β© 2026 @wkalidev


Built for the 1.4 billion unbanked Β· Powered by Celo Β· Proof of Presence Protocol

About

The DailyDrop, Check-in daily on-chain. Build a 7-day streak, earn DROP tokens. Built on Celo & Base.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors