The Ultimate African Card Game Experience on Solana
Whot Go! is a modern, blockchain-powered implementation of the classic African card game "Whot" (also known as "Wot" or "Wot Card"). Built on Solana with Honeycomb Protocol integration, it brings the traditional family card game into the Web3 era with multiplayer support, achievements, and on-chain profiles.
Whot is a popular African card game similar to Crazy Eights, where players try to get rid of their cards by matching suits or numbers. The game features special cards with unique abilities and strategic gameplay that has been enjoyed by families across Africa for generations.
- Traditional Whot Rules: Authentic African card game experience
- Special Cards: Hold On, Pick 2, General Market, and Whot cards with unique abilities
- Strategic Play: Match suits, numbers, or use special cards to outmaneuver opponents
- Multiple Players: Support for 2-4 players in both single-player and multiplayer modes
- Real-time Gaming: Live multiplayer matches with real opponents
- Room System: Create or join game rooms with customizable settings
- Live Chat: Communicate with other players during games
- Match History: Track your games and performance over time
- Solana Network: Fast, low-cost transactions on Solana blockchain
- Honeycomb Protocol: On-chain user profiles and achievements
- Wallet Integration: Connect with Phantom, Solflare, and other Solana wallets
- Achievement System: Earn achievements and track progress on-chain
- Automatic Unlocking: Achievements unlock automatically when requirements are met
- XP Rewards: Earn XP for completing games and unlocking achievements
- On-chain Storage: All achievements and XP stored securely on Solana
- Progress Tracking: Real-time progress monitoring for all achievements
- Level System: Level up based on XP earned from games and achievements
- Sound Effects: Authentic card sounds and game audio
- Animations: Smooth card animations and visual effects
- Responsive Design: Works perfectly on desktop and mobile devices
- Modern UI: Beautiful, intuitive interface with retro gaming aesthetics
- Firebase Integration: Real-time game state and user data
- Web Audio API: Optimized sound system for mobile devices
- SVG Rendering: High-quality card graphics with browser compatibility
- Performance Optimized: Smooth gameplay even on low-end devices
- A Solana wallet (Phantom, Solflare, etc.)
- Some SOL for transaction fees (automatic airdrop provided for testing)
- Modern web browser
- Connect Wallet: Connect your Solana wallet to the game
- Create Profile: Set up your on-chain gaming profile
- Choose Mode: Select single-player or multiplayer
- Start Playing: Join a room or create your own
- Earn Achievements: Complete games to earn XP and unlock achievements
- Match cards by suit or number
- Use special cards strategically
- Be the first to get rid of all your cards
- Watch out for Whot cards - they can change the game!
whotgo/
โโโ src/ # Main source code
โ โโโ components/ # React components
โ โ โโโ Game.jsx # Main game interface and multiplayer logic
โ โ โโโ Lobby.jsx # Multiplayer room management and player matching
โ โ โโโ popups/ # Modal dialogs and overlays
โ โ โ โโโ AchievementPopup.jsx # Achievement display and notifications
โ โ โ โโโ GameLogPopup.jsx # Game history and log viewer
โ โ โ โโโ GameModePopup.jsx # Single-player vs multiplayer selection
โ โ โ โโโ HelpPopup.jsx # Game rules and help documentation
โ โ โ โโโ LeaderboardPopup.jsx # Player rankings and statistics
โ โ โ โโโ ProfilePopup.jsx # User profile management and settings
โ โ โ โโโ RoundEndPopup.jsx # Round completion and results screen
โ โ โ โโโ SettingsPopup.jsx # Game settings and preferences
โ โ โ โโโ SyncPopup.jsx # Data synchronization status
โ โ โ โโโ WhotShapePopup.jsx # WHOT card shape selection interface
โ โ โโโ BadgeNotification.jsx # Achievement notification system
โ โ โโโ ErrorBoundary.jsx # Error handling and recovery
โ โ โโโ LottieConfetti.jsx # Celebration animations
โ โ โโโ ProfileCreationStatus.jsx # Profile creation progress UI
โ โ โโโ WalletProvider.jsx # Solana wallet connection provider
โ โโโ utils/ # Utility functions and business logic
โ โ โโโ profile.js # Server-side Honeycomb Protocol integration and profile management
โ โ โโโ profileClient.js # Client-side profile operations
โ โ โโโ achievementService.js # Achievement system, XP management, and game rewards
โ โ โโโ soundEffects.js # Audio system with Web Audio API
โ โ โโโ cardSVG.js # Card graphics and SVG rendering
โ โ โโโ deck.js # Card deck creation and shuffling
โ โ โโโ gameUtils.js # Game logic utilities and helpers
โ โโโ assets/ # Static assets and resources
โ โ โโโ confetti-celebration.json # Lottie animation data
โ โโโ App.jsx # Main application component and state management
โ โโโ App.css # Global styles and responsive design
โ โโโ firebase.js # Firebase configuration and initialization
โ โโโ index.css # Base CSS styles and resets
โ โโโ index.jsx # Application entry point and React initialization
โโโ public/ # Public static assets
โ โโโ assets/ # Public assets directory
โ โ โโโ sounds/ # Audio files and sound effects
โ โ โ โโโ effects/ # Individual sound effect files
โ โ โโโ Confetti Celebration.lottie # Lottie animation file
โ โโโ favicon.svg # Website favicon
โ โโโ manifest.json # Progressive Web App manifest
โ โโโ output.css # Compiled CSS output
โโโ functions/ # Firebase Cloud Functions
โ โโโ index.js # Server-side logic and API endpoints
โ โโโ package.json # Functions dependencies
โโโ tools/ # Development and build tools
โ โโโ checkBraces.cjs # Code validation and brace checking
โ โโโ checkBraces.js # Brace validation utility
โ โโโ convert-favicon.html # Favicon conversion tool
โโโ docs/ # Documentation and guides
โโโ .env files # Environment variables (not in repo)
โโโ package.json # Project dependencies and scripts
โโโ tailwind.config.js # Tailwind CSS configuration
โโโ vite.config.js # Vite build tool configuration
โโโ firebase.json # Firebase project configuration
โโโ netlify.toml # Netlify deployment configuration
โโโ vercel.json # Vercel deployment configuration
โโโ README.md # This documentation file
The heart of the application containing all React components, utilities, and business logic.
-
components/: Reusable UI components organized by functionalityGame.jsx: Core game interface handling card rendering, player interactions, and multiplayer synchronizationLobby.jsx: Multiplayer room management, player matching, and game room creationpopups/: Modal dialogs for various game interactions and settings- Supporting Components: Error handling, notifications, and wallet integration
-
utils/: Business logic and utility functionsprofile.js: Server-side Honeycomb Protocol integration and profile managementprofileClient.js: Client-side profile operations and data fetchingachievementService.js: Achievement system, XP management, and game rewardssoundEffects.js: Complete audio system using Web Audio API for mobile compatibilitycardSVG.js: Card graphics generation and SVG rendering optimizationdeck.js: Card deck creation, shuffling, and validationgameUtils.js: Game logic helpers and utility functions
-
assets/: Static resources like animations and configuration files
Files served directly to the browser without processing.
assets/sounds/: Audio files for game sound effects and musicassets/: Other static resources like animations and images- Configuration Files: PWA manifest, favicon, and compiled CSS
Firebase Cloud Functions for server-side operations.
index.js: API endpoints for game state management and user datapackage.json: Backend dependencies and configuration
Helper scripts and tools for development and build processes.
- Code Validation: Brace checking and syntax validation tools
- Asset Processing: Favicon conversion and other asset utilities
package.json: Project dependencies, scripts, and metadatatailwind.config.js: CSS framework configuration and customizationsvite.config.js: Build tool configuration and optimization settingsfirebase.json: Firebase project settings and deployment configurationnetlify.toml: Netlify deployment settings and build commandsvercel.json: Vercel deployment configuration (alternative hosting)
src/App.jsx: Main application component managing game state, wallet connection, and navigationsrc/index.jsx: Application entry point with React initialization and provider setupsrc/firebase.js: Firebase configuration and database connection setup
src/components/Game.jsx: Complete game interface with card rendering, animations, and multiplayer syncsrc/utils/deck.js: Card deck management including creation, shuffling, and validationsrc/utils/gameUtils.js: Game state utilities, player calculations, and helper functions
src/utils/profile.js: Server-side Honeycomb Protocol integration and profile managementsrc/utils/profileClient.js: Client-side profile operations and data fetchingsrc/utils/achievementService.js: Achievement system with XP management and game rewardssrc/components/WalletProvider.jsx: Solana wallet connection and adapter management
src/utils/soundEffects.js: Complete audio system with Web Audio API for mobile optimizationsrc/utils/cardSVG.js: Card graphics generation with SVG optimization and cachingpublic/assets/sounds/: Audio files for game effects and background music
src/components/popups/: Modal dialogs for game interactions, settings, and notificationssrc/App.css: Global styles with responsive design and mobile optimizationssrc/components/BadgeNotification.jsx: Achievement notification system
- User Authentication: Wallet connection โ Profile creation/loading
- Game Initialization: Deck creation โ Player setup โ Game state initialization
- Gameplay Loop: Card actions โ State updates โ Firebase sync โ UI updates
- Multiplayer Sync: Real-time updates via Firebase โ Player coordination
- Achievement Tracking: Progress monitoring โ Achievement unlocking โ Blockchain updates
- Local State: React hooks for UI state and component data
- Firebase: Real-time game state, user profiles, and multiplayer data
- Honeycomb Protocol: On-chain achievements, XP, and user profiles
- LocalStorage: User preferences, session data, and cached information
App.jsx (Main Container)
โโโ WalletProvider (Wallet Connection)
โโโ Game (Game Interface)
โ โโโ Player Cards (User's hand)
โ โโโ Opponent Cards (AI/Other players)
โ โโโ Play Pile (Current card)
โ โโโ Market Deck (Draw pile)
โ โโโ Game Controls (Actions)
โโโ Popups (Modal Dialogs)
โ โโโ AchievementPopup
โ โโโ SettingsPopup
โ โโโ HelpPopup
โ โโโ Other Modals
โโโ Navigation (Menu System)
This structure provides a clear separation of concerns, making the codebase maintainable, scalable, and easy to understand for new developers joining the project.
- Frontend: React.js with Vite
- Blockchain: Solana with Honeycomb Protocol
- Backend: Firebase (Realtime Database, Cloud Functions)
- Styling: Tailwind CSS
- Audio: Web Audio API
- Graphics: SVG with browser optimization
- Deployment: Netlify
Play Now: https://whotgo.netlify.app
We welcome contributions! Please feel free to submit issues, feature requests, or pull requests.
This project is licensed under the MIT License.
Join the Whot Go! community and experience the future of African card gaming on the blockchain! ๐โจ