Skip to content

Track 3: Solana Phone / Web3 Tasks

Timeline: After Track 1 MVP, ~April-June 2026 Tasks: 48 Total Hours: 168h (21 working days) Repos: backend-api, athion-sdk, app-user, coach-app, champion-stats-hub Dependencies: Track 1 MVP must be functional first Status tracking: [ ] To Do | [~] In Progress | [x] Done

Branch Naming Convention

All branches: feature/T3-XXX-short-description

Progress

Phase Tasks Hours Done %
A: dApp Store Publish T3-001..004 4h 0 0%
B: Wallet Integration (MWA) T3-005..017 56h 0 0%
C: NFT Achievement Badges T3-018..033 72h 0 0%
D: Health-to-Earn (conditional) T3-034..041 40h 0 0%
Infrastructure & Testing T3-042..048 20h 0 0%
Total 48 168h 0 0%

Key Decisions

  • Phase D (Health-to-Earn) is CONDITIONAL — only proceed if Phases A-C show traction
  • Compressed NFTs via Metaplex Bubblegum — <$0.01/mint vs $1-2 for regular NFTs
  • No official Flutter SDK for Solana Mobile Stack — need platform channels
  • Sellwyse is a real product first, crypto layer on top (NOT a move-to-earn app)

Phase A: dApp Store Publish (4h)

ID Task Repo Branch Status Est. Hours Done When
T3-001 Build Android APK release variant for Solana dApp Store app-user feature/T3-001-apk-release-build [ ] 1h APK builds successfully with release signing. Size under 100MB
T3-002 Write dApp Store listing: description, screenshots, category (Health & Fitness) app-user feature/T3-002-dapp-store-listing [ ] 1h Listing copy written. 4+ screenshots prepared. Category set
T3-003 Submit to Solana dApp Store review app-user feature/T3-003-dapp-store-submit [ ] 1h Submission complete. Tracking review status
T3-004 Monitor review and address feedback app-user feature/T3-004-dapp-store-review [ ] 1h App approved and live on dApp Store

Phase B: Wallet Integration via MWA (56h)

ID Task Repo Branch Status Est. Hours Done When
T3-005 Research Solana Mobile Wallet Adapter (MWA) protocol research feature/T3-005-mwa-research [ ] 4h MWA docs read. Understand authorize/sign/send flow
T3-006 Create solana_wallet_service.dart platform channel (Android) app-user feature/T3-006-wallet-platform-channel [ ] 8h Platform channel connects Flutter to Android MWA SDK. Compiles
T3-007 Implement wallet authorize flow — connect wallet app-user feature/T3-007-wallet-authorize-flow [ ] 6h User taps "Connect Wallet" -> MWA popup -> wallet app opens -> user approves -> public key returned to app
T3-008 Store wallet public key in backend user profile backend-api feature/T3-008-wallet-address-column [ ] 3h New wallet_address column on users table. PUT /profile accepts wallet_address. Validated as valid Solana public key
T3-009 Display connected wallet in app profile app-user feature/T3-009-wallet-profile-display [ ] 3h Profile shows truncated wallet address (e.g., "7xKX...9fPq"). Disconnect button. Connected/disconnected state
T3-010 Implement sign message flow for authentication app-user feature/T3-010-wallet-sign-auth [ ] 6h App requests wallet signature on a nonce message. Backend verifies signature matches stored public key. Auth alternative to email/password
T3-011 Backend signature verification endpoint backend-api feature/T3-011-wallet-verify-endpoint [ ] 4h POST /auth/wallet-verify accepts {publicKey, signature, message}. Verifies ed25519 signature. Returns JWT token if valid
T3-012 USDC SPL token balance display app-user feature/T3-012-usdc-balance-display [ ] 4h Fetch USDC balance from Solana RPC for connected wallet. Display in wallet screen. Auto-refresh every 30s
T3-013 Send USDC payment for coaching sessions app-user feature/T3-013-usdc-payment-send [ ] 6h User can pay for coaching session with USDC. Transaction built, signed via MWA, sent to Solana. Confirmation waited. Backend updated on success
T3-014 Backend payment verification — on-chain confirmation backend-api feature/T3-014-payment-onchain-verify [ ] 4h Backend verifies USDC transfer on-chain via Solana RPC. Checks: correct amount, correct recipient, finalized. Updates session payment status
T3-015 Receive USDC — coach payout flow backend-api + coach-app feature/T3-015-coach-usdc-payout [ ] 4h Coach can request payout in USDC to their connected wallet. Backend builds transfer, requires admin approval, executes
T3-016 Transaction history from on-chain data app-user feature/T3-016-tx-history-onchain [ ] 4h Wallet screen shows recent Solana transactions: date, type, amount, status. Fetched from Solana RPC getSignaturesForAddress
T3-017 iOS wallet adapter (if Solana Mobile supports iOS) app-user feature/T3-017-ios-wallet-adapter [ ] 4h Check if MWA works on iOS or needs alternative (e.g., deep link to Phantom). Implement appropriate flow

Phase C: NFT Achievement Badges (72h)

ID Task Repo Branch Status Est. Hours Done When
T3-018 Design 10 achievement badge NFT artworks design feature/T3-018-badge-nft-artwork [ ] 8h 10 badge designs: First Steps, 7-Day Streak, 30-Day Streak, 10K Steps Day, Marathon Distance, Sleep Master, Early Bird, Night Owl, Social Butterfly, Iron Will. Each as 512x512 PNG
T3-019 Create NFT metadata JSON for each badge backend-api feature/T3-019-nft-metadata-json [ ] 3h Metaplex-compatible JSON metadata for each badge: name, symbol, description, image URI, attributes (tier, category, rarity)
T3-020 Set up Metaplex Bubblegum compressed NFT tree backend-api feature/T3-020-bubblegum-merkle-tree [ ] 6h Create merkle tree on Solana devnet using Bubblegum. Tree can hold 1M+ compressed NFTs. Cost: ~$50 for tree creation
T3-021 Implement mint compressed NFT function backend-api feature/T3-021-mint-compressed-nft [ ] 8h Backend function: mint_badge(user_wallet, badge_type) -> mints compressed NFT to user's wallet via Bubblegum. Cost: <$0.01 per mint
T3-022 Badge trigger system — detect achievements backend-api feature/T3-022-badge-trigger-system [ ] 8h Background job checks user milestones: 7-day streak? First 10K steps day? Triggers NFT mint when milestone reached. Idempotent — won't mint same badge twice
T3-023 POST /achievements/mint — manual mint trigger with validation backend-api feature/T3-023-achievements-mint-endpoint [ ] 4h Endpoint validates user earned the badge. Prevents duplicate mints. Returns mint transaction signature
T3-024 GET /achievements — list user's NFT badges backend-api feature/T3-024-achievements-list-endpoint [ ] 3h Returns list of user's earned badges with: name, image, earned_at, mint_status, transaction_signature. Both minted and unminted (earned but no wallet connected)
T3-025 Badge display in app — achievement gallery app-user feature/T3-025-badge-gallery-ui [ ] 6h Achievement screen shows all 10 badges. Earned = color + date. Unearned = greyed out with progress bar. Tap earned -> show NFT details + on-chain link
T3-026 Badge share card — shareable achievement image app-user feature/T3-026-badge-share-card [ ] 4h Share button generates branded card with badge image, user stats, Sellwyse branding. Share to Twitter/Instagram/Telegram
T3-027 Badge notification on earn app-user feature/T3-027-badge-earn-notification [ ] 2h Push notification when badge earned: "You earned the 7-Day Streak badge!" Tap -> achievement screen
T3-028 Web achievement gallery champion-stats-hub feature/T3-028-web-achievement-gallery [ ] 4h /achievements page shows badge collection. Same earned/unearned display. Link to Solana Explorer for minted NFTs
T3-029 Leaderboard by badges earned backend-api feature/T3-029-badge-leaderboard [ ] 4h GET /leaderboard/badges — ranked by total badges earned. Shows top 50. User's rank included
T3-030 Badge rarity display — % of users who have each badge backend-api + app-user feature/T3-030-badge-rarity-display [ ] 3h Each badge shows "Earned by X% of users". Calculated from total users vs badge holders
T3-031 Seasonal/limited badges — time-limited achievement NFTs backend-api feature/T3-031-seasonal-limited-badges [ ] 4h Admin can create time-limited badges (e.g., "March Madness" — 100K steps in March). Auto-expires. Creates FOMO
T3-032 Badge collection completeness — "Collect them all" progress app-user feature/T3-032-badge-collection-progress [ ] 3h Progress bar: "5/10 badges collected". Completion unlocks special badge (meta-achievement)
T3-033 SDK badge service athion-sdk feature/T3-033-sdk-badge-service [ ] 4h AchievementService with methods: listBadges(), getBadge(id), mintBadge(badgeType), getLeaderboard(). Typed models

Phase D: Health-to-Earn (40h, conditional on Phase A-C traction)

ID Task Repo Branch Status Est. Hours Done When
T3-034 Design health-to-earn token economics research feature/T3-034-token-economics-design [ ] 8h Token model: earn rate per activity, daily caps, anti-gaming measures, sustainability analysis. Document: why this won't be another STEPN
T3-035 SPL token creation (or use existing) backend-api feature/T3-035-spl-token-creation [ ] 4h Create SPL token for health rewards OR use USDC rewards. Decision based on Phase D research
T3-036 Earn calculation engine — steps/sleep/workouts -> points backend-api feature/T3-036-earn-calculation-engine [ ] 8h Function: calculate_earn(user_id, date) -> points earned. Inputs: steps, sleep quality, workout completion. Anti-gaming: GPS verification, device attestation
T3-037 Daily earn summary and claim app-user feature/T3-037-daily-earn-summary [ ] 4h Daily summary card: "You earned 150 points today" with breakdown. Claim button transfers tokens to wallet
T3-038 Earn history and lifetime stats app-user feature/T3-038-earn-history-stats [ ] 3h Earn history screen: daily earnings chart, lifetime total, streak multiplier status
T3-039 Anti-gaming detection backend-api feature/T3-039-anti-gaming-detection [ ] 6h Detect: impossible step counts (>100K/day), sleep logging while active, GPS spoofing signals. Flag suspicious activity. Withhold rewards pending review
T3-040 Reward shop — spend points on premium features backend-api + app-user feature/T3-040-reward-shop [ ] 4h Simple shop: redeem points for premium features (AI analytics, coach session discount). No physical goods initially
T3-041 Leaderboard — top earners backend-api feature/T3-041-earner-leaderboard [ ] 3h GET /leaderboard/earn — weekly/monthly top earners. Prizes for top 10 (extra points, exclusive badges)

Infrastructure & Testing (20h)

ID Task Repo Branch Status Est. Hours Done When
T3-042 Solana RPC configuration — mainnet + devnet backend-api feature/T3-042-solana-rpc-config [ ] 2h Config for Solana RPC endpoints. Devnet for testing, mainnet for production. Rate limiting. Fallback RPC providers
T3-043 Solana keypair management — secure key storage backend-api feature/T3-043-keypair-management [ ] 3h Mint authority keypair stored in AWS Secrets Manager. Never exposed in code. Rotation procedure documented
T3-044 Devnet testing — full flow with test SOL backend-api + app-user feature/T3-044-devnet-full-test [ ] 4h Full test on devnet: connect wallet -> earn badge -> mint NFT -> view on explorer. Test SOL from faucet
T3-045 Mainnet deployment checklist backend-api feature/T3-045-mainnet-deploy-checklist [ ] 2h Checklist: tree created, metadata uploaded, RPC configured, keypair secured, fee payer funded, monitoring set up
T3-046 Error handling for Solana transactions backend-api feature/T3-046-solana-error-handling [ ] 3h Handle: network errors, insufficient SOL, transaction timeout, duplicate mint attempts. User-friendly error messages
T3-047 Solana transaction monitoring backend-api feature/T3-047-solana-tx-monitoring [ ] 2h Log all Solana transactions: type, signature, status, cost. Dashboard shows daily mint count, SOL spent, success rate
T3-048 Track 3 integration tests backend-api feature/T3-048-track3-integration-tests [ ] 4h Integration tests: wallet connect, badge mint, payment flow, earn calculation. All pass on devnet