Parent: #877
Three bugs
1. FDV mismatch between /airdrop and /token pages
- /airdrop shows FDV: $20.75K
- /token shows FDV: $21.26K (correct, matches Mint Club)
Root cause: The airdrop status API uses getPlotUsdPrice() which tries 3 sources via Promise.any(). The /token page likely uses Mint Club SDK directly. Different sources return slightly different prices.
Fix: Align the airdrop status API to use the same price source as /token for consistency.
2. Chart: current FDV dot position and linear projection are wrong
Current FDV dot: Appears at ~$2M on Y-axis, but actual FDV is ~$21K. Should be near the bottom.
Linear projection: Should start from campaign start date with the start FDV, not from current date. The line represents "constant growth needed from day 1 to hit Diamond."
Fix:
- Fix log scale mapping for the dot position
- Projection:
(campaignStartX, startFDV) → (campaignEndX, diamondFDV)
3. Mobile chart still unreadable
The chart text, milestone labels, axis labels, and legend are far too small on mobile (~375px). The SVG scales down but font sizes don't compensate.
Fix — mobile-specific layout:
On screens < 640px, replace the SVG chart with a simplified mobile view:
┌──────────────────────────────┐
│ FDV Progress │
│ │
│ Current: $20.75K │
│ ████░░░░░░░░░░░░░░░░ 2% │
│ │
│ 🥉 $1M ─────────── 10% │
│ 🥈 $10M ────────── 30% │
│ 🥇 $50M ────────── 50% │
│ 💎 $100M ───────── 100% │
│ │
│ Linear target today: $XXK │
└──────────────────────────────┘
- Show full SVG chart on desktop only (sm: and above)
- On mobile: progress bar + milestone list + current vs target comparison
- All text at readable mobile sizes (12-14px)
This avoids trying to cram a complex multi-axis chart into 375px — it just doesn't work.
Files
src/app/api/airdrop/status/route.ts — align FDV source
src/components/airdrop/CampaignHero.tsx — fix dot, fix projection, add mobile layout
Acceptance Criteria
Parent: #877
Three bugs
1. FDV mismatch between /airdrop and /token pages
Root cause: The airdrop status API uses
getPlotUsdPrice()which tries 3 sources viaPromise.any(). The /token page likely uses Mint Club SDK directly. Different sources return slightly different prices.Fix: Align the airdrop status API to use the same price source as /token for consistency.
2. Chart: current FDV dot position and linear projection are wrong
Current FDV dot: Appears at ~$2M on Y-axis, but actual FDV is ~$21K. Should be near the bottom.
Linear projection: Should start from campaign start date with the start FDV, not from current date. The line represents "constant growth needed from day 1 to hit Diamond."
Fix:
(campaignStartX, startFDV)→(campaignEndX, diamondFDV)3. Mobile chart still unreadable
The chart text, milestone labels, axis labels, and legend are far too small on mobile (~375px). The SVG scales down but font sizes don't compensate.
Fix — mobile-specific layout:
On screens < 640px, replace the SVG chart with a simplified mobile view:
This avoids trying to cram a complex multi-axis chart into 375px — it just doesn't work.
Files
src/app/api/airdrop/status/route.ts— align FDV sourcesrc/components/airdrop/CampaignHero.tsx— fix dot, fix projection, add mobile layoutAcceptance Criteria