A casual arcade game with neon aesthetics โ play instantly in your browser.
๐ฎ Play Now โ snake-neon-arena.vercel.app
Built as a Farcaster miniapp on Base. No downloads, no wallet required โ just play.
| Feature | Description |
|---|---|
| ๐ 3 Game Modes | Neon Ranked (classic), Time Blitz (60s survival), Zen Flow (relaxing) |
| โก Power-ups | Speed Boost, Score Multiplier, Magnet, Shield, Time Freeze |
| ๐จ Skins & Missions | Unlock snake skins by completing gameplay challenges |
| ๐ Daily Rewards | 7-day streak system, up to 1000 bonus apples |
| ๐ Global Leaderboard | Compete worldwide with cross-platform identity |
| ๐ชช Unified Identity | Farcaster, wallet, and guest sessions merge into one profile |
| ๐ฑ Mobile Support | Full touch controls with virtual D-pad |
| ๐ NFT Badges | Optional on-chain badge minting on Base |
Neon Ranked โ Classic snake with increasing difficulty. Hit walls or yourself = game over.
Time Blitz โ 60-second survival. Walls wrap around, power-ups extend time.
Zen Flow โ Relaxing 2-minute session. No death, walls wrap, chill music.
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS, Framer Motion |
| Backend | Supabase (PostgreSQL + Real-time) |
| Web3 | RainbowKit, Wagmi, Viem, Thirdweb (Base chain) |
| Farcaster | Frame SDK for miniapp integration |
| Audio | Howler.js for sound effects and music |
- Core Gameplay โ Classic, Time Blitz, and Zen Flow modes
- Mobile Support โ Full touch control optimization
- Farcaster Frame & Wallet Connect integration
- Global Leaderboards & Daily Rewards
- NFT Badge minting on Base
- Multi-chain expansion ๐
- Seasonal Skins & Community Events ๐จ
๐ง Developer Setup
npm installCreate a .env.local file in the root directory:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-here
VITE_WALLET_CONNECT_PROJECT_ID=your-walletconnect-project-idGet your credentials:
- Supabase: https://app.supabase.com/project/_/settings/api
- WalletConnect: https://cloud.walletconnect.com/
Execute the SQL migration in your Supabase dashboard (SQL Editor):
# The migration file is located at:
SUPABASE_MIGRATION.sqlThis will create:
player_profilestable (TEXT-based identity system)game_sessionstable (stores all game results)- 4 leaderboard views (neon_ranked, time_blitz, zen_flow, total_apples)
- Performance indexes
npm run devThe app will be available at http://localhost:5173
๐ Identity System
The game uses a TEXT-based identity system with priority:
- Farcaster FID (
fc:123) - Highest priority - Wallet Address (
0x...) - Second priority - Guest UUID (
guest:uuid) - Fallback for anonymous players
All game sessions are aggregated by canonical_user_id for unified identity:
- Play as a guest, then connect your wallet โ scores merge
- Connect Farcaster later โ all previous games attributed to your FID
- One identity, multiple login methods
๐ Project Structure
src/
โโโ components/
โ โโโ GlobalLeaderboard.jsx # Main leaderboard component
โ โโโ GameBoard.jsx # Game rendering
โ โโโ DailyCheckIn.jsx # Daily rewards system
โ โโโ ...
โโโ hooks/
โ โโโ useSnakeGame.js # Core game logic
โโโ utils/
โ โโโ storage.js # Database sync & local storage
โ โโโ supabaseClient.js # Supabase configuration
โ โโโ playerSync.js # Player profile synchronization
โ โโโ constants.js # Game configuration
โโโ App.jsx # Main application component
๐ Build & Deployment
npm run buildOutput will be in the dist/ directory.
Deployment notes:
- Vercel:
vercel.jsonis configured for SPA routing and Farcaster Frame manifest - Environment Variables: Add all
VITE_*variables to your hosting platform - Farcaster Manifest: Update
public/.well-known/farcaster.jsonwith your production URL
Dev tips:
- Linting:
npm run lint - Preview build:
npm run preview - Mobile testing: dev server runs on
0.0.0.0:5173
MIT
Built by @Pytkopff for the Farcaster ecosystem on Base.