,---. ,--. ,--. ,----. ,------.
/ O \ ,-' '-.,--,--,--. ,---. ,---. ,---. | ,---. ,---. ,--.--. ,---. ,-----.'.-. || .-. \
| .-. |'-. .-'| || .-. |( .-' | .-. || .-. || .-. :| .--'| .-. :'-----' .' < | | \ :
| | | | | | | | | |' '-' '.-' `)| '-' '| | | |\ --.| | \ --. /'-' || '--' /
`--' `--' `--' `--`--`--' `---' `----' | |-' `--' `--' `----'`--' `----' `----' `-------'
`--' A minimalist, interactive 3D weather visualization application built with React and Globe.GL. This project renders a monochrome 3D globe, allowing users to explore real-time weather data and forecasts for any location on Earth using the Open-Meteo API.
- Interactive 3D Globe: A high-performance WebGL globe featuring vector-based continent outlines and a monochrome aesthetic.
- Real-time Weather Data: Click anywhere on the globe or landmasses to fetch current weather conditions (temperature, humidity, wind speed, weather code).
- Global Heatmap: Visualizes temperature data for major global cities using color-coded points on the globe surface.
- Location Search & Favorites: Search for any city worldwide and save it to a quick-access sidebar.
- Forecasts: Displays a 3-day weather forecast summary for selected locations.
- Modern UI: Built with a custom dark mode design system inspired by ShadCN/UI, featuring glassmorphism effects and custom cursors.
- Responsive: Fully responsive design that works on desktop and mobile devices.
- Framework: React 18
- Build Tool: Vite
- 3D Visualization: Globe.GL (Three.js wrapper)
- Styling: Tailwind CSS & clsx
- Icons: Lucide React
- Data Fetching: Axios
- API: Open-Meteo (Free, no API key required)
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/dhevenddra/atmosphere-3d.git cd atmosphere-3d -
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open the app Open your browser and navigate to
http://localhost:5173(or the port shown in your terminal).
├── src/
│ ├── components/
│ │ ├── ui/ # Reusable UI primitives (Button, Card, Input, etc.)
│ │ ├── GlobeVisualization.tsx # Main 3D Globe logic
│ │ ├── WeatherCard.tsx # Weather details overlay
│ │ └── Sidebar.tsx # Navigation and search sidebar
│ ├── services/
│ │ └── api.ts # Open-Meteo API integration
│ ├── types.ts # TypeScript interfaces
│ ├── App.tsx # Main application layout
│ └── main.tsx # Entry point
├── index.html
├── package.json
└── vite.config.ts
- Globe Appearance: Modify
src/components/GlobeVisualization.tsxto change colors, altitude, or polygon styles. - Major Cities: Update the
MAJOR_CITIESarray insrc/services/api.tsto change the initial data points on the globe. - Theming: The app uses CSS variables for theming in
index.htmland Tailwind utility classes.
This project is open-source and available under the MIT License.
