A beautiful, real-time flight tracking application built with React, Vite, and Leaflet. Track flights around the world with an interactive map, search functionality, and live updates.
- 🗺️ Interactive Map - Leaflet-powered map with dark theme
✈️ Real-Time Flight Data - Live flight tracking using OpenSky Network API- 🔍 Search & Filter - Search flights by callsign or country
- 📊 Live Statistics - Track total flights, in-flight count, and countries
- 🎨 Premium UI/UX - Modern dark theme with glassmorphism and animations
- 🔄 Auto-Refresh - Flight data updates every 10 seconds
- 📱 Responsive Design - Works on desktop, tablet, and mobile
- Node.js (version 20.19+ or 22.12+ recommended)
- npm (comes with Node.js)
-
Clone the repository
git clone https://github.com/akashkaintura/flight-tracker.git cd flight-tracker -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser
- Navigate to the URL shown in the terminal (typically
http://localhost:5173) - The app will automatically reload when you make changes
- Navigate to the URL shown in the terminal (typically
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Frontend Framework: React 19.2.0
- Build Tool: Vite 7.2.4
- Map Library: Leaflet + React-Leaflet
- Data Source: OpenSky Network API
- Styling: Vanilla CSS with CSS Variables
- Icons: Emoji & Custom SVG
The app fetches live flight data from the OpenSky Network API, displaying up to 200 flights at a time with automatic updates every 10 seconds.
- Click on airplane markers to view flight details
- Map automatically focuses on selected flights
- Dark theme optimized for visibility
- Custom airplane icons that rotate based on flight heading
Filter flights in real-time by:
- Flight callsign (e.g., "UAL123")
- Origin country (e.g., "Germany")
- Glassmorphism effects with backdrop blur
- Animated gradients and glowing effects
- Smooth transitions and micro-animations
- Responsive layout for all screen sizes
flight-tracker/
├── src/
│ ├── components/
│ │ ├── FlightMap.jsx # Interactive Leaflet map
│ │ ├── FlightCard.jsx # Flight information card
│ │ ├── SearchBar.jsx # Search input component
│ │ └── FlightStats.jsx # Statistics display
│ ├── services/
│ │ └── flightService.js # API integration
│ ├── utils/
│ │ └── utils.js # Helper functions
│ ├── App.jsx # Main application
│ ├── App.css # App-specific styles
│ ├── index.css # Global styles & design system
│ └── main.jsx # Entry point
├── public/
├── index.html
├── package.json
└── vite.config.js
The OpenSky Network API has rate limits for anonymous users (~100 requests/day). For higher limits, consider:
- Creating an OpenSky Network account
- Using alternative APIs (Aviationstack, FlightAPI, AirLabs)
- Colors: Modify CSS variables in
src/index.css - Map Theme: Change tile layer URL in
src/components/FlightMap.jsx - Refresh Rate: Adjust interval in
src/App.jsx(default: 10 seconds) - Flight Limit: Change limit in
src/services/flightService.js(default: 200)
npm run buildThe optimized build will be in the dist/ folder, ready for deployment to:
- Vercel
- Netlify
- GitHub Pages
- Any static hosting service
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
This project is open source and available under the MIT License.
- OpenSky Network for providing free flight data
- Leaflet for the amazing mapping library
- React and Vite for the development experience
Created by Akash Kaintura
⭐ Star this repo if you find it helpful!