This is my love letter to space exploration 🚀
An interactive web application for exploring NASA's confirmed exoplanet database, featuring 3D WebGL visualizations, data analysis, and discovery tools.
Exoplanets brings the universe to your browser with:
- 6,000+ confirmed exoplanets and 4,500+ host stars from NASA's database
- 3D WebGL rendering with custom shaders for planets and stars
- Interactive data visualizations powered by D3.js
- Habitability analysis with scoring algorithms
- Star system orbital visualizations in 3D space
- Multi-language support (English & Portuguese)
Browse and filter through 6,000+ confirmed exoplanets with advanced search capabilities:
- Multi-criteria filtering (type, size, temperature, habitability)
- Detailed planet pages with 3D visualizations
- Habitability scoring and analysis
Explore 4,500+ host stars with detailed information:
- Star classification and properties
- Hosted planets overview
- 3D star surface shaders
Analytics dashboard featuring:
- D3.js charts and visualizations
- 3D spatial view of habitable planets
- Score distribution analysis
- Temperature and mass correlations
Interactive 3D orbital visualizations:
- Real-time orbital mechanics
- Travel time calculations
- System-wide planet comparisons
Community-driven voting on the most promising exoplanets for potential habitability.
Daily NASA APOD integration showcasing stunning space imagery.
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- 3D Rendering: Three.js + @react-three/fiber
- Data Visualization: D3.js
- Styling: Tailwind CSS
- Routing: React Router v6
- i18n: react-i18next (English + Portuguese)
- Backend: Firebase
- Logging: @guinetik/logger
- Node.js 18+ and npm
- Python 3.8+ (for data pipeline)
# Clone the repository
git clone https://github.com/yourusername/exoplanets.git
cd exoplanets
# Install dependencies
npm install
# Start development server
npm run devThe application will be available at http://localhost:5173
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm test # Run tests
npm run test:watch # Run tests in watch mode
npm run lint # Run ESLint
npm run format # Format code with Prettier
npm run build:deploy # Build and deploy to GitHub Pagesexoplanets/
├── src/ # Frontend source code
│ ├── components/ # Reusable React components
│ ├── routes/ # Page components (lazy-loaded)
│ ├── services/ # Singleton services (data, shaders, APOD)
│ ├── context/ # React Context providers
│ ├── utils/ # Utilities and helpers
│ │ └── math/ # Pure mathematical primitives
│ ├── types/ # TypeScript interfaces
│ ├── i18n/ # Translations
│ └── styles/ # Tailwind CSS styles
├── public/ # Static assets
│ ├── data/ # CSV data files
│ └── shaders/ # GLSL shader files
├── data/ # Data pipeline (Python)
│ ├── fetch_exoplanets.py # NASA API fetcher
│ └── process_exoplanets.py # Data transformer
└── docs/ # Project documentation
Comprehensive documentation is available in the docs/ directory:
- Architecture Overview - System design and tech stack
- Component Hierarchy - React component structure
- Shader System - 3D rendering architecture
- Data Pipeline - Data transformation process
- API Documentation - Service layer reference
See the docs README for a complete index.
We welcome contributions! Please read our Contributing Guidelines for:
- Code style guidelines
- Development setup
- Architecture principles
- Testing requirements
All exoplanet data is sourced from NASA's Exoplanet Archive API and processed through our custom pipeline. The data includes:
- 72 processed columns (derived from 683 NASA columns)
- Habitability calculations
- Orbital mechanics data
- Star system relationships
MIT
- Live Site: exoplanets.guinetik.com
- Demo Video: YouTube
- Documentation: docs/
Built with ❤️ using React, Three.js, and D3.js