https://github.com/moodyjmz/iss-track-react
Iss Tracker in React
https://github.com/moodyjmz/iss-track-react
api experiment iss react
Last synced: 21 days ago
JSON representation
Iss Tracker in React
- Host: GitHub
- URL: https://github.com/moodyjmz/iss-track-react
- Owner: moodyjmz
- License: mit
- Created: 2025-03-27T09:12:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-09-15T10:33:20.000Z (10 months ago)
- Last Synced: 2025-09-15T12:24:28.801Z (10 months ago)
- Topics: api, experiment, iss, react
- Language: TypeScript
- Homepage: https://moodyjmz.github.io/iss-track-react/
- Size: 1.22 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ISS Tracker
A real-time International Space Station (ISS) tracking application that visualizes the current position of the ISS on an interactive map, shows telemetry data with smooth animations, and predicts future overhead passes for any location on Earth.
## 🌍 What It Does
The ISS Tracker provides a comprehensive view of the International Space Station's current status and location:
- **Real-time tracking** of the ISS position with live updates
- **Interactive world map** showing the ISS location and ground track
- **Orbital history visualisation** with enhanced tracking lines and historical path display
- **Telemetry display** with animated values for altitude, velocity, and coordinates
- **Location intelligence** showing the nearest city to the ISS
- **Future pass predictions** - select any city and see when the ISS will be overhead in the next 12 hours
- **Smart resource management** - automatically pauses updates when the browser tab is inactive
## ✨ Key Features
### 🎯 Core Functionality
- **Live ISS Position**: Real-time tracking with coordinates, altitude, and velocity
- **Interactive Map**: Leaflet-powered world map with the ISS position marker
- **Orbital Path Visualisation**: Enhanced historical tracking with thicker orbital lines for better visibility
- **Nearest City Display**: Shows which city the ISS is currently closest to
- **Future Pass Calculator**: Predicts when the ISS will be visible from any selected location
- **Responsive Design**: Works seamlessly on desktop and mobile devices
### 🎨 User Experience
- **Smooth Animations**: Custom scrambler element with animated number transitions
- **Internationalised Formatting**: Locale-aware number and unit formatting
- **Performance Optimised**: Intelligent polling that respects browser focus state
- **Error Handling**: Robust error boundaries with graceful fallbacks
- **Loading States**: Clear loading indicators during data fetching
### 🔧 Technical Features
- **TypeScript**: Fully typed codebase with global type declarations and module path aliases
- **Modular Architecture**: Clean separation of concerns with feature-based organisation
- **Custom Web Components**: Animated value display with scrambler effects
- **Smart API Management**: AbortController-based request handling with retry logic
- **Performance Optimisations**: React.memo, useCallback, and useMemo for optimal rendering
- **Performance Hooks**: Custom hooks for page focus detection and async data management
## 🛠 Technical Stack
- **Framework**: React 19 with TypeScript
- **Build Tool**: Vite for fast development and optimised builds
- **Testing**: Vitest with React Testing Library for comprehensive test coverage
- **Mapping**: Leaflet with React-Leaflet for interactive maps
- **Styling**: CSS with custom properties and modular stylesheets
- **APIs**:
- [wheretheiss.at](https://wheretheiss.at) for current ISS position
- [g7vrd.co.uk](https://api.g7vrd.co.uk) for future pass predictions
- **Deployment**: GitHub Pages with automated deployment
## 🚀 Getting Started
### Prerequisites
- Node.js (version 16 or higher)
- npm or yarn
### Installation
1. Clone the repository:
```bash
git clone
cd my-app
```
2. Install dependencies:
```bash
npm install
```
3. Start the development server:
```bash
npm run start
```
4. Open your browser and navigate to `http://localhost:5173`
### Available Scripts
```bash
# Development
npm run start # Start development server
npm run build # Build for production
npm run serve # Preview production build
# API Development
npm run json # Start mock JSON server on port 8000
# Testing
npm run test # Run tests in watch mode
npm run test:run # Run tests once
npm run test:ui # Run tests with visual UI
npm run test:coverage # Run tests with coverage report
# Quality Assurance
npm run lint # Run ESLint (when configured)
npm run typecheck # Run TypeScript type checking
npm audit # Check for security vulnerabilities
```
## 🏗 Architecture
The application follows a modular architecture with clear separation of concerns:
- **`src/components/`** - Reusable UI components with performance optimisations
- **`src/features/`** - Feature-specific code (ISS tracker with orbital path visualisation)
- **`src/services/`** - API service layer with error handling and retry logic
- **`src/hooks/`** - Custom React hooks for state management and data fetching
- **`src/types/`** - Global TypeScript type declarations (`.d.ts` files)
- **`src/utils/`** - Utility functions and helpers
- **`src/context/`** - React context providers
- **`src/stores/`** - Zustand state management for orbital data
### 🎨 Recent Improvements
- **TypeScript Module System**: Refactored to use global type declarations, eliminating import conflicts
- **Module Path Aliases**: Clean imports using `@components/*`, `@services/*`, etc.
- **Orbital History Enhancement**: Improved visual tracking with thicker historical path lines
- **Performance Optimisations**: Added React.memo, useCallback, and useMemo across components
- **Type Safety**: Comprehensive TypeScript coverage with custom web component definitions
## 🌟 Future Enhancements
- [ ] ~~Historical tracking with ISS orbit visualisation~~ ✅ **Completed** - Enhanced orbital path tracking
- [ ] API call optimisation to reduce duplicate requests
- [ ] Push notifications for upcoming passes
- [ ] Multiple satellite tracking
- [ ] Augmented reality features for mobile
- [ ] Social sharing of ISS sightings
- [ ] Advanced filtering and search capabilities
## 🔧 Known Issues
- **Orbital History**: Some edge cases in orbital path display that need investigation
- **API Optimisation**: Potential duplicate API calls occurring - requires analysis and optimisation
- **UI Consistency**: Some UI inconsistencies across components that require addressing
## 📱 Live Demo
Visit the live application: [ISS Tracker](https://jamesmanuel.github.io/iss-track-react/)
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## 📄 License
This project is open source and available under the [MIT License](LICENSE).