GreenPulse is a modern, responsive web app built with React and Vite to visualize key climate indicators using real-world, up-to-date environmental datasets.
where the goal was to design a clean, user-friendly dashboard that raises awareness about global warming.
-
📊 Interactive charts for:
- Global land and ocean temperatures
- Atmospheric CO₂, CH₄ (Methane), and N₂O (Nitrous Oxide)
- Polar sea ice extent
-
🌦️ Live weather widget with 7-day forecast (collapsible on mobile)
-
⚡ Powered by modern APIs and updated datasets
-
📱 Responsive design with mobile-first adaptations:
- 🔁 Switches to bar charts on small screens for better readability
-
🧭 Intuitive navigation with a clean Hero UI interface
-
🧠 Smart caching to reduce redundant API calls
-
🌈 Smooth animations & loading skeletons for a polished UX
-
📤 Export any chart as PNG or PDF
-
💡 Built using best practices in structure and performance
The weather widget uses the Weatherbit API, which has a daily request limit of 50 calls (free tier). If the forecast is not visible, the limit may have been reached for the day. The rest of the dashboard continues to function normally.
| Technology | Purpose |
|---|---|
| React + Vite | Fast modern frontend development |
| Hero UI | Clean and accessible component library |
| Recharts | Lightweight charting library |
| Framer Motion | Smooth animations |
| Tailwind CSS | Utility-first styling (via Hero UI) |
| Weatherbit API | Real-time weather data |
| Global Warming API | Climate metrics and historical datasets |
| html2canvas / jsPDF | Export functionality (PNG, PDF) |
Note on HeroUI versions: HeroUI component versions have been pinned to ensure compatibility with Tailwind CSS 3.4.16. This prevents dependency conflicts that could occur with newer HeroUI versions that require Tailwind CSS 4.x.
src/
├── api/ // API clients (co2, methane, weather etc.)
├── components/ // Shared and page-specific UI components
├── layouts/ // Reusable layout wrappers
├── pages/ // Route-based pages (Home, About, etc.)
├── utils/ // Custom hooks and utilities
├── styles/ // Custom global or component styles
- API calls abstracted in
api/modules (not directly in components) - Functional components only with Hooks
- Each component in its own folder (logic + styles)
- Skeletons and animated loading states via Hero UI
- Responsive design with mobile chart adaptation
- Collapsible weather widget for small screens
- Custom hooks:
useCachedDatafor caching API resultsuseIsMobilefor responsive behavior
git clone https://github.com/andreaferrari95/global-warming-dashboard.git
cd global-warming-dashboardnpm installNote: The --legacy-peer-deps flag is required due to version conflicts between HeroUI components and Tailwind CSS. This flag allows npm to bypass strict peer dependency checks.
Create a file called .env at the root and add your Weatherbit API key:
VITE_WEATHERBIT_API_KEY=your_api_key_here
npm run devOpen http://localhost:5173 in your browser to see the app running.
This app is easily deployable via Netlify, Vercel, or Firebase Hosting.
If using Netlify:
- Push your repo to GitHub
- Create a Netlify account and connect the GitHub repo
- Set build command to
npm run build - Set publish directory to
dist - Add the env variable
VITE_WEATHERBIT_API_KEYin Netlify settings - Ensure proper SPA routing with a _redirects file:
/* /index.html 200 - Deploy!
If you'd like to collaborate, provide feedback, or just say hi:
- 💌 Email:
vchaitanya@chowdari.in - 🌐 LinkedIn:
Let's Connect!
This project is for educational purposes and is open source under the MIT License.
“Climate change is no longer some far-off problem; it is happening here, it is happening now.”
— Barack Obama