Interactive 3D exploration of environmental pollution data through immersive visualizations. Built for Hackathon 2024 with Three.js, Chart.js, and vanilla JavaScript.
EcoPulse makes complex environmental data accessible through engaging 3D visualizations:
- Air Pollution: Animated city skyline with particle-based smog simulation
- Water Pollution: River flow with contamination particles and clickable hotspots
- Light Pollution: Night sky visualization with light pollution intensity controls
- Real-time Three.js scenes with WebGL optimization
- Particle systems for pollution visualization
- Camera orbit and tap-to-focus controls
- Mobile-responsive with touch gestures
- Chart.js visualizations (bar, line, radial gauges)
- Regional pollution comparisons (Asia, Europe, Americas, Africa, Oceania)
- Historical trend analysis (2018-2024)
- Real-time data updates based on user interaction
- Pollution level sliders (0-100%)
- Region selector dropdown
- Day/night toggle for light pollution
- Export current view as PNG
- Share functionality
- WCAG AA compliant
- Keyboard navigation (Tab, Arrow keys, Escape)
- ARIA attributes for screen readers
- High contrast mode support
- Focus indicators
- Responsive breakpoints (mobile, tablet, desktop)
- Touch controls (pinch-to-zoom, swipe)
- PWA support with offline capabilities
- Optimized for low-end devices
- AI prompt generator for mitigation strategies
- Ambient environmental sounds toggle
- Shader effects for enhanced visuals
- Presentation mode for hackathon judging
EcoPulse is an advanced, interactive web platform designed to showcase the power of data-driven sustainability.
Built with love and precision, it brings together real-time analytics, immersive data visualization, and clean, futuristic UI โ all wrapped in a smooth, responsive experience inspired by next-gen tech aesthetics.
๐ซ ๐ Explore EcoPulse โ Click Here to Visit ๐ซ
Dive into a visually rich experience that turns environmental insights into interactive stories.
From climate data patterns to ecological impact analysis โ EcoPulse makes information come alive.
- ๐ฑ Real-time interactive dashboards
- ๐ Data visualization that speaks louder than numbers
- ๐ง Built using modern web technologies (React, Tailwind, Next.js)
- โ๏ธ Optimized for performance, minimal latency & responsive scaling
- ๐ค Designed with an eco-minimalist philosophy
Empower individuals and organizations to understand, visualize, and act on environmental change โ through the beauty of interactive technology.
EcoPulse is not just another website โ itโs a call to rethink how data and design can drive sustainability.
If you believe in technology for a greener tomorrow:
๐ Star the repo, share your ideas, and be a part of EcoPulse.
Together, letโs make innovation serve the planet ๐โ๏ธ
- Modern web browser (Chrome 90+, Firefox 85+, Safari 14+, Edge 90+)
- Local development server (Python, Node.js, or PHP)
-
Clone or download the project
git clone <repository-url> cd Hacknova
-
Start a local server
Option A: Python 3
python -m http.server 8000
Option B: Node.js
npx serve .Option C: PHP
php -S localhost:8000
-
Open in browser
http://localhost:8000
Hacknova/
โโโ index.html # Landing page
โโโ air.html # Air pollution visualization
โโโ water.html # Water pollution visualization
โโโ light.html # Light pollution visualization
โโโ presentation.html # Hackathon presentation slides
โโโ manifest.json # PWA manifest
โโโ README.md # Documentation
โโโ css/
โ โโโ styles.css # Custom styles
โโโ js/
โ โโโ main.js # Core functionality
โ โโโ air-3d.js # Air pollution 3D scene
โ โโโ water-3d.js # Water pollution 3D scene
โ โโโ light-3d.js # Light pollution 3D scene
โ โโโ charts.js # Chart.js visualizations
โ โโโ shared.js # Shared utilities (export, accessibility)
โ โโโ bonus-features.js # AI suggestions, sounds, effects
โโโ data/
โ โโโ sample-data.json # Pollution metrics dataset
โโโ assets/
โโโ models/ # 3D models (glTF/glb)
โโโ sounds/ # Ambient audio files
โโโ images/ # Images and icons
- Frontend: HTML5, CSS3, Vanilla JavaScript (ES6+)
- 3D Graphics: Three.js r128 (via CDN)
- Data Visualization: Chart.js (via CDN)
- Styling: Tailwind CSS + Custom CSS
- Fonts: Google Fonts (Inter)
- PWA: Service Worker + Manifest
The project includes data/sample-data.json with comprehensive pollution metrics:
{
"pollution_data": {
"air": { "current_data": {...}, "historical_trends": {...} },
"water": { "current_data": {...}, "historical_trends": {...} },
"light": { "current_data": {...}, "historical_trends": {...} }
}
}To replace sample data with live API data:
-
Modify
js/charts.js:async loadData() { try { // Replace with your API endpoint const response = await fetch('https://api.example.com/pollution'); this.data = await response.json(); this.initializeCharts(); } catch (error) { console.error('API load failed:', error); this.loadFallbackData(); } }
-
Recommended APIs:
- Air Quality: OpenAQ, AirVisual
- Water Quality: Water Quality Portal
- Light Pollution: Globe at Night
npx netlify-cli deploy --prod --dir .npx vercel --prod- Push to GitHub repository
- Settings โ Pages โ Select branch โ Save
npm install -g firebase-tools
firebase login
firebase init hosting
firebase deploy- Desktop: Click navigation links, use mouse to interact with 3D scenes
- Mobile: Tap menu icon, swipe to navigate, pinch-to-zoom on 3D scenes
- Pollution Slider: Adjust pollution levels (0-100%)
- Region Selector: Choose geographic region for data
- Day/Night Toggle: Switch light pollution visualization mode
- Export Button: Save current view as PNG image
- Share Button: Copy shareable link
- Tab: Navigate between interactive elements
- Arrow Keys: Navigate presentation slides
- Escape: Close modals and dropdowns
- Spacebar: Play/pause animations (where applicable)
Edit css/styles.css:
:root {
--eco-blue: #0ea5e9;
--eco-green: #10b981;
--eco-orange: #f97316;
--eco-red: #ef4444;
}In js/air-3d.js (similar for other scenes):
const particleCount = Math.min(1000, Math.floor(this.pollutionLevel * 15));
// Reduce multiplier for better performance: * 10 instead of * 15Update data/sample-data.json:
{
"pollution_data": {
"air": {
"current_data": {
"new_region": {
"pm25": 30.5,
"aqi": 120,
...
}
}
}
}
}- Particle count scales with device capability
- LOD (Level of Detail) for 3D models
- Lazy loading of assets
- Debounced window resize handlers
- RequestAnimationFrame for smooth 60fps
- CDN usage for faster library loading
- Use production builds of Three.js
- Implement code splitting
- Enable gzip compression on server
- Add service worker for offline caching
- Minify CSS and JavaScript
- Issue: WebGL not supported
- Solution: Fallback SVG animations will display automatically
- Issue: Chart.js CDN failed to load
- Solution: Check internet connection or use local Chart.js file
- Issue: Laggy animations on older devices
- Solution: Reduce particle count in
*-3d.jsfiles
- Issue: Cannot load JSON data
- Solution: Must use a local server (see Quick Start)
| Browser | Version | Status |
|---|---|---|
| Chrome | 90+ | โ Full Support |
| Firefox | 85+ | โ Full Support |
| Safari | 14+ | โ Full Support |
| Edge | 90+ | โ Full Support |
| Opera | 76+ | โ Full Support |
| Mobile | iOS 14+ / Android 10+ | โ Full Support |
This is a hackathon project, but contributions are welcome!
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
- Data Sources: WHO, EPA, Scientific Research Papers
- Libraries: Three.js, Chart.js, Tailwind CSS
- Inspiration: Environmental awareness campaigns worldwide
- Event: Hackathon 2024
Project Team: EcoPulse Development Team
Event: Hackathon 2024
Category: Environmental Data Visualization
Built with โค๏ธ for environmental awareness | Hackathon 2024