A modern, interactive web application for exploring exoplanets discovered by NASA's TESS (Transiting Exoplanet Survey Satellite) mission. Features include real-time 3D visualization, mission planning calculations, and habitable zone analysis—all powered by live data from the NASA Exoplanet Archive.
- Real-time filtering by stellar type and distance
- Comprehensive data table with 20+ exoplanet properties
- Habitable zone status indicators
- Summary statistics dashboard
- Two View Modes: Star View (all exoplanet systems) and System View (individual planetary systems)
- WebGL Rendering: Powered by Three.js for smooth 3D graphics
- Interactive Controls:
- Mouse drag to rotate camera
- Scroll to zoom in/out
- Right-click drag to pan
- Click planets to zoom to their system
- Visual Features:
- Color-coded by habitability (green = habitable, red = too hot, blue = too cold)
- Planetary orbits in System View
- Habitable zone visualization (shaded green ring)
- Hover labels showing planet names
- Our Sun's habitable zone (yellow ring)
- Spatial Calculations: Real 3D coordinates from RA/Dec/Distance
- Select any TESS-discovered exoplanet
- Calculate travel times at different velocities (0.1c, 0.5c, 0.9c)
- Compare with conventional rocket technology
- Mission feasibility assessment
- Scientific habitable zone boundary calculations
- Per-planet habitability classification
- Stellar properties display
- System-wide analysis
- ✅ Eliminated Pinia dependency → Lightweight Vue 3 composables
- ✅ Fixed SSR initialization errors → Disabled SSR for optimal performance
- ✅ Modern UI/UX redesign → Aerospace-focused dark theme with glassmorphism
- ✅ 3D Visualization → Custom Canvas-based star map with perspective projection
- ✅ Mission Planning → Theoretical interstellar mission calculations
- ✅ Habitable Zone Analysis → Scientific habitability classification
- ✅ Enhanced Data → 20+ properties per planet vs. 4 previously
- ✅ Better Performance → Removed PrimeVue, optimized rendering
- Vue 3 Composition API throughout
- TypeScript with strict typing
- Tailwind CSS for styling
- lucide-vue-next for icons
- Custom 3D rendering engine
All data comes directly from the NASA Exoplanet Archive via their TAP (Table Access Protocol) service:
- Source: https://exoplanetarchive.ipac.caltech.edu/
- Mission: TESS (Transiting Exoplanet Survey Satellite)
- Query: Real-time SQL queries to the
ps(Planetary Systems) table - Format: JSON
- Update Frequency: Live data from NASA's continuously updated archive
- Identifiers: Planet name, host star name
- Discovery: Year, facility, detection method
- Planetary Properties: Radius, mass, orbital period, semi-major axis, eccentricity, temperature
- Stellar Properties: Temperature, radius, mass, spectral type
- Positional Data: Right ascension, declination, distance
- Calculated: 3D Cartesian coordinates, habitable zone status
All calculations are documented with scientific references to ensure accuracy and reproducibility.
Uses the Kopparapu et al. (2013) formulation for calculating conservative habitable zones:
Reference: Kopparapu, R. K., et al. (2013). "Habitable Zones Around Main-Sequence Stars: New Estimates." The Astrophysical Journal, 765(2), 131. DOI: 10.1088/0004-637X/765/2/131
Formula:
// Step 1: Calculate stellar luminosity using Stefan-Boltzmann Law
L = (R_star / R_sun)² × (T_star / T_sun)⁴
// Step 2: Calculate effective stellar flux using 4th-order polynomial
// where T* = T_eff - 5780 K
Seff = S₀ + a×T* + b×T*² + c×T*³ + d×T*⁴
// Step 3: Calculate distance in AU
d = √(L / Seff)
// Conservative Habitable Zone (used in this application):
// Inner: Runaway Greenhouse (S₀ = 1.107)
// Outer: Maximum Greenhouse (S₀ = 0.356)Coefficients (from Kopparapu 2013, Table 3):
| Boundary | S₀ | a | b | c | d |
|---|---|---|---|---|---|
| Inner (Runaway Greenhouse) | 1.107 | 1.332×10⁻⁴ | 1.580×10⁻⁸ | -8.308×10⁻¹² | -1.931×10⁻¹⁵ |
| Outer (Maximum Greenhouse) | 0.356 | 6.171×10⁻⁵ | 1.698×10⁻⁹ | -3.198×10⁻¹² | -5.575×10⁻¹⁶ |
Example: For our Sun (R = 1.0 R☉, T = 5778 K):
- Inner boundary: ~0.95 AU (Venus-like)
- Outer boundary: ~1.67 AU (Mars-like)
- Earth at 1.0 AU is comfortably within this zone ✓
Additional Resources:
The NASA Exoplanet Archive sometimes contains inconsistent stellar parameters for newly discovered planets, particularly from TESS. When stellar radius (st_rad) or temperature (st_teff) values are incorrect or from multiple conflicting sources, the calculated habitable zone boundaries can be wrong.
Problem Example:
- TOI-6478 b: Database stellar params suggest HZ at 0.08-0.15 AU, planet orbits at 0.11 AU → Classified as "habitable" ✗
- Reality: Planet receives only 0.00034× Earth's sunlight, equilibrium temp is 204K (-68°C) → Frozen, not habitable ✓
Solution - Equilibrium Temperature Sanity Check:
To prevent false positives, we implement a two-stage verification process:
- Calculate HZ boundaries using Kopparapu 2013 formulas (based on stellar parameters)
- Verify with equilibrium temperature as a sanity check (based on actual energy received)
Temperature Thresholds:
// Conservative habitable temperature range
MIN_HABITABLE_TEMP = 235K // -38°C
MAX_HABITABLE_TEMP = 350K // 77°CRationale:
- Lower bound (235K): Between Mars (210K, outer HZ edge) and confirmed habitable planets (269-280K). Filters out frozen worlds while allowing for reasonable greenhouse effects.
- Upper bound (350K): Well above Earth's 288K surface temp. Allows for high albedo or thin atmospheres. Venus at 737K is clearly too hot.
- Earth reference: 255K equilibrium (no atmosphere), 288K surface (with greenhouse effect)
Planets Filtered Out:
- TOI-904 c: T_eq = 217K → Too cold (outside range)
- TOI-6478 b: T_eq = 204K → Too cold (outside range)
Verified Habitable Planets:
- TOI-700 d: T_eq ≈ 269K ✓
- TOI-715 b: T_eq ≈ 280K ✓
- TOI-2257 b: T_eq ≈ 278K ✓
Note: This is a data quality filter, not a definitive habitability assessment. Actual habitability depends on atmospheric composition, greenhouse effects, albedo, tidal locking, and many other factors.
Converts equatorial coordinates (Right Ascension, Declination, Distance) to Cartesian coordinates for 3D visualization:
Reference: Standard astronomical coordinate transformation (Murray, C. A., 1983. Vectorial Astrometry)
Formula:
// Convert degrees to radians
const raRad = (ra * π) / 180
const decRad = (dec * π) / 180
// Equatorial to Cartesian transformation
x = distance × cos(dec) × cos(ra)
y = distance × cos(dec) × sin(ra)
z = distance × sin(dec)Coordinate System:
- X-axis: Points toward RA = 0°, Dec = 0° (Vernal Equinox direction)
- Y-axis: Points toward RA = 90°, Dec = 0°
- Z-axis: Points toward Dec = 90° (North Celestial Pole)
- Units: Parsecs (1 pc ≈ 3.26 light years)
- Proper motion corrections
- Galactic coordinate system
- Perspective-corrected scaling
- Distance-dependent filtering
Note: Our Sun is at the origin (0, 0, 0). Distances are filtered to show only systems >30 parsecs away to prevent visual crowding.
Planetary orbital distances are scaled using a square root function for better visualization:
// Actual orbital distance in AU
const actualDistance = planet.pl_orbsmax
// Scaled distance for 3D rendering (in scene units)
const scaledDistance = √(actualDistance) × 40
// Why square root?
// - Linear scaling: Distant planets too far to see
// - Logarithmic scaling: Close planets too close to star
// - Square root: Best compromise for visibilityExample (Jupiter at 5.2 AU):
- Linear (×40): 208 units (too far)
- Square root (×40): ~91 units (visible) ✓
- Logarithmic (×30): ~51 units (too compressed)
Planets are scaled relative to their host stars for visibility while maintaining approximate proportions:
// Star radius: 8 scene units (fixed)
// Planet radius: based on Earth radii (pl_rade)
const planetRadius = Math.max(0.5, Math.min((pl_rade || 1) × 0.3, 2))
// Capped between 0.5-2 units (6-25% of star size)
// Real proportions: Jupiter ≈ 10% of Sun, Earth ≈ 1% of SunNote: Planet sizes are exaggerated for visibility. In reality, even Jupiter would be barely visible at these scales.
Travel time calculations at fractions of light speed:
Formula:
// Convert distance from parsecs to light years
const distanceLY = distanceParsecs × 3.262
// Calculate travel time
travel_time_years = distanceLY / velocity_fraction_of_c
// Example: TOI-700 d at 31.1 pc (101.5 ly) at 0.1c
// travel_time = 101.5 / 0.1 = 1,015 yearsPropulsion Scenarios:
- 0.1c: Theoretical nuclear fusion drives (e.g., Project Daedalus concept)
- 0.5c: Advanced antimatter or fusion ramjet (far future)
- 0.9c: Requires breakthrough physics (warp drive, etc.)
- Conventional rockets (~50 km/s ≈ 0.00017c): Current technology baseline
Reference:
- Project Daedalus: British Interplanetary Society (1978)
- Interstellar travel physics: Forward, R. L. (1984). "Roundtrip Interstellar Travel Using Laser-Pushed Lightsails"
Reality Check: No spacecraft has exceeded 0.0002c to date (Voyager 1 at ~17 km/s)
exoplanet-discovery/
├── app.vue # Main layout with header/footer
├── pages/
│ └── index.vue # Tab navigation
├── components/
│ ├── ExoplanetOverview.vue # Overview tab
│ ├── StarMap3D.vue # 3D visualization
│ ├── MissionCalculator.vue # Mission planning
│ ├── HabitableZoneAnalysis.vue # Habitability analysis
│ └── [Helper Components] # UI components
├── composables/
│ └── useExoplanets.ts # Main data logic
├── types/
│ └── exoplanet.ts # TypeScript definitions
├── server/api/
│ └── exoplanets.ts # NASA API proxy
└── nuxt.config.ts # Configuration
- Node.js 18+ or Node.js 20+
- npm or yarn
# Clone the repository
git clone https://github.com/chrisobo98/exoplanet-hub.git
cd exoplanet-hub
# Install dependencies
npm install# Start development server
npm run dev
# Server runs on http://localhost:3000 (or 3001 if 3000 is busy)# Build for production
npm run build
# Preview production build
npm run preview
# Generate static site
npm run generate| Technology | Purpose |
|---|---|
| Nuxt 3 | Vue.js framework with SSR disabled |
| Vue 3 | Reactive UI framework |
| TypeScript | Type safety |
| Tailwind CSS | Utility-first styling |
| Three.js | WebGL 3D graphics library |
| Axios | HTTP client for NASA API |
| lucide-vue-next | Icon library |
For detailed documentation including architecture, components, and data flow:
- DOCUMENTATION.md - Technical overview and architecture
For detailed scientific formulas, references, and contribution guidelines:
- CALCULATIONS.md - All calculations with peer-reviewed references
- Habitable zone formulas (Kopparapu 2013)
- 3D coordinate transformations
- Visualization scaling methods
- Known limitations and areas for improvement
- How to contribute calculation improvements
Sources:
- 🌐 Web-Based 3D: Full Three.js visualization in the browser - no downloads or installations required
- 📱 Mobile-First Design: Fully responsive interface that works on phones, tablets, and desktops
- 🔬 Scientific Transparency: Open-source Kopparapu 2013 formulas with full documentation and peer-reviewed citations
- 🚀 Educational Mission Planning: Unique interstellar travel calculator comparing theoretical propulsion systems
- 🎯 TESS Focus: Specialized for NASA's newest exoplanet discoveries (2018-present)
- 🆓 Completely Open Source: MIT licensed - fork it, learn from it, contribute to it
- ⚡ Modern Stack: Vue 3, Nuxt 3, Three.js, TypeScript - learn cutting-edge web development
- 🎓 Learning Tool: Perfect for students, educators, and space enthusiasts to explore real NASA data
- 📊 Comprehensive Documentation: CALCULATIONS.md explains every formula with academic references
- 🎓 Students & Educators: Interactive learning tool for astronomy and space exploration
- 🔭 Astronomy Enthusiasts: Explore real TESS discoveries with professional-grade visualizations
- 🚀 Aerospace Professionals: Understand mission planning concepts and habitability analysis
- 💻 Developers: Modern Vue 3 + Nuxt architecture reference, best practices in action
- 📊 Data Scientists: Advanced interactive data visualization techniques
- 🏫 Planetariums & Museums: Public display-ready interface with auto-rotation mode
- Remove Pinia dependency → Vue 3 composables
- Fix SSR initialization errors → Disable SSR
- Implement modern UI/UX with glassmorphism
- Build custom 3D star map visualization with Three.js
- Add mission planning calculator
- Add habitable zone analysis
- Enhance data model (20+ fields)
- Fix API field name (
discoverymethod) - Add watch logic for stellar types filter
- Remove unused components
- Add comprehensive documentation
- API.md - Complete API reference
- COMPONENTS.md - Component architecture
- DOCUMENTATION.md - Technical overview
- Heavy code commenting throughout components
- Set up GitHub repository
- Live demo deployed on Netlify
- Add screenshots/demo GIF to README
- Create demo video
- Add CONTRIBUTING.md
- Add CODE_OF_CONDUCT.md
- Create initial GitHub release (v2.0.0)
- Submit to Show HN / Product Hunt
- Share on r/dataisbeautiful
- Share on r/space and r/Astronomy
- Post on Twitter/X with demo
- Add to Awesome Vue list
- Add to NASA's Third-Party Tools page
- Create YouTube tutorial
- Write blog post about architecture
- Implement data export (CSV, JSON)
- Add chart visualizations (Chart.js)
- Create comparison tool
- Add saved filter presets
- Implement server-side caching (Redis)
- Add Docker support
- Create mobile app (React Native)
- Add more missions (Kepler, K2)
- Implement user accounts (optional)
We welcome contributions! Here's how to get started:
-
Fork the repository
-
Create a feature branch
git checkout -b feature/amazing-feature
-
Make your changes
- Follow the existing code style
- Add comments for complex logic
- Update documentation if needed
-
Test your changes
npm run dev # Verify all tabs work correctly -
Commit your changes
git commit -m "feat: add amazing feature" -
Push to your fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Use TypeScript for type safety
- Follow Vue 3 Composition API patterns
- Add JSDoc comments for functions
- Use semantic commit messages
- Test on mobile devices
MIT License
Copyright (c) 2025 Exoplanet Discovery Hub
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Data License: All exoplanet data sourced from NASA Exoplanet Archive is in the public domain.
- NASA Exoplanet Archive - Caltech / JPL / NASA
- TESS Mission - MIT / NASA Goddard Space Flight Center
- TAP Service - IPAC / Caltech
- Framework: Nuxt 3 / Vue 3
- Styling: Tailwind CSS
- Icons: Lucide Icons
- Build Tool: Vite
- Deployment: Vercel / Netlify
- NASA mission control interfaces
- SpaceX Dragon interface
- James Webb Space Telescope operations UI
- Aerospace-grade data visualization systems
- The NASA Exoplanet Archive team for maintaining excellent public API documentation
- The TESS mission team for discovering thousands of exoplanets
- The Vue.js and Nuxt communities for amazing open-source tools
- All contributors and users who help improve this project
- Live Demo: exoplanethub.netlify.app
- Documentation: docs/
- GitHub Issues: Report a Bug
- NASA Archive: exoplanetarchive.ipac.caltech.edu
- TESS Mission: tess.mit.edu
Built with ❤️ for space exploration and scientific discovery
"The universe is under no obligation to make sense to you." - Neil deGrasse Tyson
Version: 2.0.0 Last Updated: December 2025 Status: Active Development Maintained by: Exoplanet Discovery Hub Team