An interactive 3D globe visualization exploring global COβ emissions from 1750 to 2024. Built with React, D3.js, and Three.js, this project transforms complex climate data into an engaging, accessible experience.
- π Interactive 3D Globe: Explore emissions data on a fully interactive, rotatable globe with zoom controls
- π Dynamic Visualizations: Real-time charts showing top emitters and country-specific breakdowns by sector
- β±οΈ Time Travel: Animate through 270+ years of emissions history with play/pause controls
- π Bilingual Support: Switch seamlessly between English and French interfaces
- π Cloudflare Analytics: Integrated privacy-first web analytics
- π SEO Optimized: Metadata, Sitemap, and Robots.txt for better discoverability
- π± Responsive Design: Optimized for desktop, tablet, and mobile devices
- βΏ Accessible: Built with accessibility best practices and semantic HTML
- π Auto-updating Data: Automated monthly data updates from the Global Carbon Budget
- Node.js 20.x or higher
- pnpm (or npm/yarn)
# Clone the repository
git clone https://github.com/kuasar-mknd/visualdon-projet.git
cd visualdon-projet
# Install dependencies (auto-detects pnpm/npm/yarn)
pnpm install
# Start development server
pnpm run devThe application will be available at http://localhost:5173
pnpm run build
pnpm run previewThis project uses authoritative emissions data from the Global Carbon Budget, maintained by leading climate scientists worldwide.
- Territorial Emissions: Country-level COβ emissions by source (coal, oil, gas, cement, flaring)
- Per Capita Emissions: Population-adjusted emissions data
- Coverage: 1750β2024 (updated annually)
The application exposes its data via a static API. You can retrieve the current dataset manifest using curl:
curl -s https://visualdon-projet.pages.dev/data/manifest.jsonFor full documentation on available data endpoints and schemas, see docs/API.md.
# Fetch latest data from Global Carbon Budget
pnpm run update-dataData updates are also automated via GitHub Actions, running monthly. See DATA_UPDATE.md for details.
- Frontend: React 19.2 with hooks
- Visualization: D3.js for charts, Three.js for 3D globe
- Styling: Tailwind CSS 4
- Build Tool: Vite 7
- Deployment: Cloudflare Pages
- Analytics: Cloudflare Web Analytics
- Data Processing: Node.js scripts for CSV parsing and optimization (see
scripts/update-data.js)
visualdon-projet/
βββ src/
β βββ components/ # React components
β β βββ charts/ # D3 Charts (Bubble, StackedArea)
β β βββ controls/ # UI Controls (Play, Slider)
β β βββ globe/ # 3D Globe elements & Legend
β β βββ layout/ # Header, Footer
β β βββ overlay/ # Details Panel
β βββ context/ # React context (Language)
β βββ hooks/ # Custom React hooks (useData)
β βββ services/ # API services (country translations)
β βββ App.jsx # Main orchestrator
β βββ main.jsx # Application entry point
βββ public/
β βββ data/ # COβ emissions datasets (CSV)
β βββ sitemap.xml # SEO Sitemap
β βββ robots.txt # Crawler directives
βββ scripts/
β βββ update-data.js # Data fetching and processing script
βββ .github/
β βββ workflows/ # GitHub Actions for automated data updates
βββ dataset/ # Original raw datasets
Common issues and solutions:
- Missing dependencies: If you encounter errors about missing modules, ensure you have run
pnpm install. - Package Manager: This project is optimized for
pnpm. If you usenpmoryarnand face issues, try deletingnode_modulesand installing withpnpm. - Node version: This project requires Node.js 20+. Use
node -vto check your version. - Port already in use: If
http://localhost:5173is taken, Vite will automatically try the next available port (e.g., 5174). Check the console output. - Data not loading: If charts are empty, try running
pnpm run update-datato fetch the latest dataset. - Environment Issues: Ensure your
.envfile (if present) does not contain conflicting variables. See docs/ENV.md for details.
The project includes a comprehensive test suite that verifies data integrity, manifest consistency, and critical file existence.
# Run integrity checks (no browser required)
pnpm testTo ensure code quality and prevent regressions, run the linter:
pnpm lintWe welcome contributions from the community! Whether you're fixing bugs, improving documentation, or proposing new features, your help is appreciated.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
Please read CONTRIBUTING.md for detailed guidelines, including:
- Code style and conventions
- Testing requirements
- Commit message format
- Pull request process
- Follow the existing code style (ESLint configuration provided)
- Write meaningful commit messages
- Test your changes across different browsers and devices
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Data Provider: Global Carbon Project
- Research Paper: Friedlingstein et al. (2021) - Global Carbon Budget 2021
- Country Translations: REST Countries API
- Institution: HEIG-VD (Haute Γcole d'IngΓ©nierie et de Gestion du Canton de Vaud)
This visualization is based on the Global Carbon Budget dataset, which provides comprehensive, peer-reviewed estimates of anthropogenic greenhouse gas emissions from 1750 to present. The research highlights:
- Continuous growth in COβ emissions across all sectors
- No significant reduction observed in any global sector to date
- The critical importance of independent, real-time emissions tracking for climate policy
Citation: Friedlingstein, P., Jones, M. W., O'Sullivan, M., et al. (2021). Global Carbon Budget 2021. Earth System Science Data, 13(11), 5213-5252. https://doi.org/10.5194/essd-13-5213-2021
- Live Demo: https://visualdon-projet.pages.dev
- Report Issues: GitHub Issues
- Discussions: GitHub Discussions
For questions or suggestions, please open an issue or start a discussion.
Made with β€οΈ for climate awareness and data transparency
