The most EPIC banana collecting game ever created!
Click the banana to collect. Some bananas are rare and wear fancy hats! Build your collection, climb the global leaderboard, and try not to get 15 common bananas in a row (or it's game over!).
- Click/tap the banana to collect it
- Rare bananas (✨ Shiny, 🌈 Rainbow, 🎩 Top Hat, 👑 Royal, etc.) can be added to your permanent collection
- Build combos by clicking quickly for bonus points
- Avoid getting 15 common bananas in a row or the game resets!
- Open the 👤 Player drawer (left side)
- A random username is auto-generated (click 🎲 for a new one)
- Click Submit Score to save to the global leaderboard
⚠️ A PIN will appear - SAVE IT! You need it to update your score on a new device
Just click Submit Score - your PIN is saved locally!
- Click "Returning on a new device?"
- Enter your PIN
- Submit - you're linked again!
| Emoji | Type | Rarity | Points |
|---|---|---|---|
| 🍌 | Common Banana | 60% | 1 |
| 🍌✨ | Shiny Banana | 15% | 5 |
| 🍌🌈 | Rainbow Banana | 10% | 10 |
| 🍌🎩 | Top Hat Banana | 8% | 15 |
| 🍌🎓 | Graduation Banana | 5% | 20 |
| 🍌👑 | Royal Banana | 1.5% | 50 |
| 🍌💎 | Diamond Banana | 0.5% | 100 |
- Optimized for touch - instant tap response, no delays
- Bottom-sheet drawers slide up from the bottom
- Swipe down to close drawers
- PWA installable - add to home screen for app-like experience
- Safe area support for notched phones (iPhone X+)
The game works on any static host (GitHub Pages, Netlify, Vercel, etc.) with JSONBin.io for the leaderboard:
- Go to jsonbin.io and create a free account
- Create a new bin with this content:
{"scores":[]} - Copy the Bin ID from the URL
- Edit
public/jsonbin-config.js:const JSONBIN_BIN_ID = 'your-bin-id-here';
- Make the bin public (or add your API key for private bins)
- Deploy to any static host!
For Cloudflare Pages with KV storage (serverless backend):
- Create a Pages project from this repository
- In Cloudflare dashboard: Pages → Functions → KV Namespaces
- Create a binding named
SCORES - Deploy - the
functions/folder auto-configures endpoints
# Install dependencies (just for the dev server)
npm install
# Start local server
npx serve public
# Or use any static server
python -m http.server 8080 --directory public- PINs are hashed using SHA-256 before storage (never stored in plain text)
- Salt added to prevent rainbow table attacks
- No passwords transmitted - only hash comparisons happen server-side
- PINs are stored locally for convenience but can be re-entered anytime
banana/
├── public/
│ ├── index.html # Main game HTML
│ ├── style.css # All styles (~950 lines)
│ ├── game.js # Game logic & UI (~1170 lines)
│ ├── jsonbin-config.js # Leaderboard API wrapper
│ └── manifest.json # PWA manifest
├── functions/ # Cloudflare Pages serverless functions
│ ├── get-scores.js
│ └── submit-score.js
├── package.json
└── readme.md
- ✨ Particle effects on banana clicks
- 🌟 Achievement popup system
- 🔥 Combo multiplier with visual feedback
- 🎵 Sound effects (Web Audio API)
- 📳 Haptic feedback on mobile
- 🎯 Tap-to-add rare bananas to collection
- ✨ Fly-to-drawer animation for collection
- 💾 Auto-saves collection to localStorage
- 📊 Global leaderboard via JSONBin.io
- 🎲 Auto-generated usernames for privacy
- 📱 Mobile-first responsive design
- 🌙 Dark theme with neon accents
- ⚡ Hardware-accelerated animations
# Push to main branch, enable Pages in repo settings
# Set source to: / (root) or /public if you move filesJust connect the repo - auto-deploys on push!
Upload the public/ folder contents to any web server.
Made with 🍌 and excessive CSS gradients.