Birdfy โ From HTML Script to iOS App
Created by V Anbu Chelvan (ZANYANBU) A tribute to Flappy Bird that evolved from a single HTML file into a full-featured iOS native game. Built with love for Dong Nguyen, whose brilliantly simple game inspired a generation of developers.
| Gameplay | Main Menu | Custom Background |
|---|---|---|
![]() |
![]() |
![]() |
To add your own screenshots: place
.pngfiles in ascreenshots/folder at the root of the repo and they will appear here automatically.
๐ Live Demo: https://zanyanbu.github.io/Birdfy.com/
Open index.html directly in any browser โ no install needed.
| Version | Platform | Technology | What Was Added |
|---|---|---|---|
| v1 | Browser | HTML5 Canvas + vanilla JS | Core flappy mechanics, physics |
| v2 | Browser | CSS3 + Web Audio API | Sci-fi theme, particle effects, sound |
| v3 | Browser | JavaScript ES6+ | Difficulty modes, AI chat sidebar, gravity slider |
| v4 | iOS + Android | React Native (Expo) | Native 60fps engine, haptics, themes, wings |
| v5 | iOS + Android | Expo SDK 54 | Gallery backgrounds, per-theme gravity, animated wings |
- โก Pure Vanilla JS โ zero frameworks or dependencies
- ๐ Particle explosion on collision (25-particle system)
- ๐ Animated starfield background
- ๐จ Sci-Fi neon glassmorphism UI
- ๐๏ธ Real-time gravity slider per difficulty
- ๐ Persistent high score via
localStorage - ๐ Procedural sound effects using Web Audio API
- ๐ค Optional local AI chatbot (DeepSeek via Ollama / LM Studio)
- ๐ฑ Responsive โ works on desktop and mobile browsers
- 3 difficulty modes: Easy / Medium / Hard
- ๐ฎ 60 FPS physics engine โ
requestAnimationFrame+Animatedrefs (no stale React state) - ๐ฅ Haptic feedback โ flap (medium thump), score (light tap), crash (error vibration)
- ๐ชฝ Animated flapping wing โ speed scales with difficulty
- ๐ Per-theme gravity control โ
โ/+buttons, 0.3ร (feather) to 2.5ร (planet), saved permanently - ๐จ 3 visual themes โ Night (dark sci-fi), Day (bright sky), Lava (fiery red)
- ๐ท Custom background โ pick any photo from your gallery to play behind the game
- ๐ Persistent best score via AsyncStorage
- โฆ "NEW RECORD" banner on beating your best
- ๐ฏ Tight hitbox with inner pixel margins (fair collision detection)
- ๐ Difficulty on Game Over screen โ switch without going back to menu
- ๐ Status bar hidden โ full immersive screen
Birdfy.com/
โ
โโโ index.html # Web game โ main layout
โโโ app.js # Web game โ all game logic, physics, AI
โโโ styles.css # Web game โ neon sci-fi styling
โโโ version2.html # Early prototype
โโโ flappy.html # Classic variant
โ
โโโ BirdfyMobile/ # React Native / Expo iOS+Android App
โ โโโ App.js # Full game: physics, rendering, UI, haptics
โ โโโ app.json # Expo config (bundle ID: com.zanya.birdfy)
โ โโโ babel.config.js # Babel with Reanimated plugin
โ โโโ eas.json # EAS Build config for App Store
โ โโโ assets/
โ โ โโโ icon.png
โ โ โโโ splash-icon.png
โ โ โโโ adaptive-icon.png
โ โโโ package.json
โ
โโโ screenshots/ # (Add your screenshots here for README)
โโโ README.md
โโโ LICENSE
Double-click index.html
Python:
python -m http.server 8000
# Open http://localhost:8000Node (npx):
npx serve .
# Open http://localhost:3000- Push to GitHub (already done)
- Go to Repository โ Settings โ Pages
- Set Source:
mainbranch, Folder:/ (root) - Click Save
Your game is live at:
https://zanyanbu.github.io/Birdfy.com/
- Go to vercel.com or netlify.com
- Click "New Project" โ Import from GitHub
- Select
ZANYANBU/Birdfy.com - Leave all settings default โ Deploy
No configuration needed โ it's a static site.
| Tool | Install |
|---|---|
| Node.js 18+ | nodejs.org |
| Expo CLI | npm install -g expo-cli |
| Expo Go app | App Store / Google Play |
# 1. Clone the repo
git clone https://github.com/ZANYANBU/Birdfy.com.git
cd Birdfy.com/BirdfyMobile
# 2. Install dependencies
npm install
# 3. Start the development server
npx expo start --clear
# 4. Scan the QR code with:
# iOS โ Camera app โ tap "Open in Expo Go"
# Android โ Expo Go app โ Scan QRSame Wi-Fi required โ your phone and computer must be on the same network.
# Install EAS CLI
npm install -g eas-cli
# Login to Expo account
eas login
# Build for iOS (creates .ipa for App Store)
eas build --platform ios
# Build for Android (creates .aab for Play Store)
eas build --platform android| Key / Click | Action |
|---|---|
Space / Click |
Flap |
Enter |
Restart after crash |
| Difficulty buttons | Easy / Medium / Hard |
| Gravity slider | Fine-tune physics |
| Action | Effect |
|---|---|
| Tap anywhere | Flap |
| Tap RETRY | Restart instantly |
| Menu โ Gravity โ/+ | Adjust gravity per theme |
| Menu โ Gallery | Set custom background from photos |
| Menu โ Theme | Night / Day / Lava |
| Menu โ Difficulty | Easy / Medium / Hard |
| Technology | Used For |
|---|---|
| HTML5 Canvas | Real-time game rendering |
| Vanilla JavaScript (ES6+) | Game loop, physics, AI calls |
| CSS3 | Neon sci-fi UI, animations |
| Web Audio API | Procedural sound generation |
| localStorage | Score persistence |
| Fetch API | Local AI chat (optional) |
| Package | Used For |
|---|---|
react-native |
Native UI components |
expo SDK 54 |
Dev tooling, build system |
expo-linear-gradient |
Background gradients |
expo-blur |
Glassmorphism menus |
expo-haptics |
Vibration feedback |
expo-image-picker |
Gallery background photos |
@react-native-async-storage |
Persistent scores & settings |
Animated API |
60fps game loop (via setValue) |
The web version has a built-in AI chat sidebar. To enable it:
ollama pull deepseek-r1:1.5b
ollama serve- Download LM Studio
- Load
deepseek-r1-distill-qwen-1.5b - Start local server (default:
http://localhost:1234)
Then in the game, open the Local DeepSeek panel and click Test Local Model.
Original Inspiration ๐ฎ Flappy Bird by Dong Nguyen โ a simple, brilliant game that changed mobile gaming. This project is a tribute and learning exercise, not a commercial product.
Developer ๐จโ๐ป V Anbu Chelvan (ZANYANBU)
MIT โ free to fork, learn from, and build upon.
โญ Star this repo if you enjoyed it. Every star means a lot to an indie dev!
Flappy Bird Pro โ SciโFi Edition is a modernized browser game that preserves the core challenge and spirit of Flappy Bird, while enhancing it with:
- Smooth physics
- Neon sciโfi visuals
- Particle effects
- Difficulty modes
- Persistent scoring
- Optional local AI chatbot integration
This project demonstrates strong fundamentals in game physics, Canvas rendering, UI/UX design, and JavaScript architecture โ all without using frameworks.
- โก Pure Vanilla JavaScript โ no libraries, no engines
- ๐ง Physicsโbased gameplay with tunable gravity & lift
- ๐ Custom particle engine for collision effects
- ๐พ Persistent scores using localStorage
- ๐จ SciโFi neon UI with glassmorphism
- ๐ค Optional local AI chat (DeepSeek via Ollama / LM Studio)
- ๐ Procedural sound effects using Web Audio API
- Three difficulty modes: Easy, Medium, Hard
- Realโtime gravity slider for fine control
- Input buffering & cooldown for smooth flaps
- Restart instantly after crash
- Animated starfield background
- Glowing pipes & HUD
- Rotating bird sprite with thrust particles
- 25โparticle explosion on collision
- Gameplay tips
- Random jokes during play
- Strategy help
- Fully offline local AI support
- HTML5 Canvas โ realโtime rendering
- JavaScript (ES6+) โ game loop, physics, AI calls
- CSS3 โ neon sciโfi styling & animations
- Web Audio API โ sound synthesis
- Game loop & deltaโtime physics
- Collision detection
- Particle systems
- State management
- Browser storage APIs
- Local AI inference via HTTP
flappy-pro/
โ
โโโ index.html # Main game layout
โโโ styles.css # Sciโfi UI & responsive styling
โโโ app.js # Game logic, physics, particles, AI chat
โโโ README.md # Documentation
โโโ LICENSE # MIT License
Simply open the file in your browser:
index.html
Using Python:
python -m http.server 8000
Then open:
http://localhost:8000
-
Push the project to GitHub
-
Go to Repository โ Settings โ Pages
-
Set:
- Source:
mainbranch - Folder:
/root
- Source:
-
Save
Your game will be live at:
https://zanyanbu.github.io/Birdfy.com/
| Key | Action |
|---|---|
| Space | Flap |
| Enter | Restart after crash |
| Difficulty buttons | Change difficulty |
| Gravity slider | Adjust physics |
ollama pull deepseek-r1:1.5b
ollama serve
- Download LM Studio
- Load
deepseek-r1-distill-qwen-1.5b - Start local server (default:
http://localhost:1234)
- Open Local DeepSeek panel
- Select Ollama or LM Studio
- Click Test Local Model
- Enable AI responses
const difficulties = {
easy: { gravity: 0.45, lift: -10.5, pipeGap: 230, pipeFreq: 125, pipeSpeed: 2.8 },
medium: { gravity: 0.6, lift: -11.5, pipeGap: 200, pipeFreq: 110, pipeSpeed: 3.2 },
hard: { gravity: 0.8, lift: -12.5, pipeGap: 170, pipeFreq: 95, pipeSpeed: 3.8 }
};:root {
--accent: #45e6ff;
--accent-2: #7e7bff;
--danger: #ff5d9e;
}Original Game Inspiration ๐ฎ Flappy Bird by Dong Nguyen This project exists purely as a technical tribute and learning project, honoring the simplicity and brilliance of the original game.
Developer ๐จโ๐ป V Anbu Chelvan (ANBU)
- GitHub: https://github.com/ZANYANBU
- Repository: https://github.com/ZANYANBU/Birdfy.com
MIT License โ free to fork, learn from, and improve.
โญ If you like this project, consider starring the repo and sharing it with fellow developers.


