Discover. Explore. Earn.
A gamified mobile app for exploring the Solana ecosystem — swipe through curated dApps, complete daily quests, earn XP, and interact with the blockchain on-chain.
Built for the MONOLITH Hackathon (Solana Seeker) — work in progress, not fully complete. This is a personal project I'm continuing to build as I learn mobile + web3 dev.
Screenshots coming soon — the app runs on Solana Seeker (Android)
Browse 35+ curated Solana dApps with a Tinder-style card interface. Filter by category (DeFi, Trading, Games, NFT & Social, Lifestyle), save projects you like, skip the rest.
Say "GM" to Solana every day by sending 5 SKR tokens to a treasury address. Fully on-chain via SPL token transfer through Mobile Wallet Adapter. Maintain streaks for escalating XP bonuses.
Daily, weekly, and special quests with auto-detection where possible:
- Daily: GM check-in, swipe 5 projects, score 30+ in Solana Runner, swap, stake
- Weekly: 7-day GM streak, collector, high scorer, swap/stake streaks, stake 140+ SKR
- Special: connect wallet, explore all projects, star on GitHub, stake 2 SOL on validator
Built-in endless runner mini-game with jump, double-jump, and slam mechanics. 12 unlockable characters.
12 achievement badges (Common → Mythic), level progression (800 XP/level), and discovery stats by category.
| Framework | React Native 0.81 + Expo SDK 54 |
| Language | TypeScript (strict) |
| Blockchain | Solana Mainnet via Helius RPC |
| Wallet | Mobile Wallet Adapter (Phantom, Solflare, Backpack) |
| Tokens | SPL Token — manual instruction building |
| Storage | AsyncStorage |
| Navigation | React Navigation v7 |
# 1. Clone and install
git clone https://github.com/Gazettebale/solquest.git
cd solquest
npm install
# 2. Set up environment
cp .env.example .env
# Edit .env and add your Helius API key (https://dev.helius.xyz/)
# 3. Start dev server
npx expo start --clear
# 4. Build for Seeker device (requires EAS)
eas build --profile development --platform androidThe app is designed for the Solana Seeker device. Mobile Wallet Adapter won't work on web or standard Android emulator without a compatible wallet installed.
A few non-obvious implementation details:
- Base64 wallet address decoding — Phantom/Solflare on Seeker return addresses in base64 instead of base58, requiring manual decoding
- Pre-transact blockhash fetching — RPC calls happen before opening the wallet modal to avoid networking issues during MWA sessions
- Raw
fetch()for RPC — More reliable than usingConnectionclass on React Native - Manual SPL transfer instructions — Built without
@solana/spl-tokento avoid Buffer/BigInt polyfill issues in React Native
src/
├── context/AppContext.tsx # Global state, wallet, GM streak, quests
├── components/
│ ├── ProjectCard.tsx # Swipeable card with animations
│ ├── MiniGame.tsx # Solana Runner game
│ └── QuestToast.tsx # Toast notifications
├── screens/
│ ├── HomeScreen.tsx # Discovery feed + GM modal
│ ├── QuestsScreen.tsx # Quest system
│ ├── SavedScreen.tsx # Saved projects
│ ├── ProfileScreen.tsx # Profile + achievements
│ └── OnboardingScreen.tsx # 3-page onboarding
└── data/projects.ts # 35 curated Solana projects
- On-chain quest verification (replace honor system for swap/stake)
- NFT achievement badges
- Social features (friends, shared leaderboards, referrals)
- Dynamic project feed (API instead of static data)
- SKR token rewards distribution
- Push notifications (daily GM reminders, streak alerts)
- Global game leaderboard
| SKR Mint | SKRbvo6Gf7GondiT3BbTfuRDPqLWei4j2Qy2NPGZhW3 |
| Treasury | Hboo3XYUcXQJL8TfRu48Nac28wxagUnxC8q5SdFL2dEY |
| GM Cost | 5 SKR per daily check-in |
MIT — @gazettebale