Project Info
π EON - Earth Saga
Interactive Environmental Data Visualization & Claude AI-Powered Storytelling
An immersive web application that transforms real-time environmental data from 222+ global regions into dynamic, Claude AI-generated narratives with multi-voice text-to-speech capabilities.
β¨ Features
π Interactive 3D Globe
- 222+ Unique Regions across multiple categories (Rainforest, Desert, Mountain, Coastal, Polar, Island, Plains)
- Real-time Environmental Data from Open-Meteo and OpenWeatherMap APIs
- Smooth 3D Interactions with Three.js and React Globe GL
- Responsive Design optimized for all devices
π€ Claude AI-Powered Narratives
- Dynamic Story Generation using Claude Sonnet 4.5 API
- Data-Driven Content analyzing all environmental parameters
- Unique Narratives that change with each generation
- Regional Context with location-specific storytelling
- Health Analysis with implications and recommendations
π Multi-Voice Text-to-Speech
- Custom Voice Integration with Fish Audio TTS
- Multiple Voices - rotates through available voices on each click
- Real-time Audio Generation with stop/play controls
- High-Quality Audio with professional voice synthesis
π¨ Advanced UI/UX
- Glassmorphism Design with modern aesthetics
- Dark/Light Theme Toggle with system preference detection
- Smooth Animations and micro-interactions
- Performance Optimized with lazy loading and memoization
π Smart Features
- Region Search with instant filtering
- Bookmark System for favorite locations
- Data Export (CSV/JSON formats)
- 15+ Environmental Parameters: Temperature, Humidity, Pressure, Wind, Precipitation, UV Index, Visibility, Cloud Cover, Solar Radiation, Air Quality, CO2, Ozone, Pollen, Soil Moisture, Noise Level
π Quick Start
Prerequisites
- Node.js 18+
- npm or yarn
- Anthropic Claude API key
- Fish Audio API key (for TTS)
Installation
# Clone the repository
git clone https://github.com/Cmk31311/Eon.git
cd earthstory
# Install dependencies
cd frontend && npm install
cd ../server && npm install
Environment Setup
Create a .env file in the root directory:
# Anthropic Claude API
VITE_ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Fish Audio TTS
FISH_API_KEY=your_fish_audio_api_key
FISH_VOICE_ID=your_voice_id
FISH_TTS_ENDPOINT=https://api.fish.audio/v1/tts
Development
# Start the frontend development server (from frontend/)
npm run dev
# Start the TTS server (from server/) in another terminal
node index.js
# Open http://localhost:5173
π Deployment
Vercel (Recommended)
-
Install Vercel CLI
npm i -g vercel -
Deploy
vercel login vercel -
Add Environment Variables in Vercel Dashboard:
VITE_ANTHROPIC_API_KEY=your_anthropic_api_key FISH_API_KEY=your_fish_audio_api_key FISH_VOICE_ID=your_voice_id FISH_TTS_ENDPOINT=https://api.fish.audio/v1/tts
ποΈ Architecture
Frontend Stack
- React 18 with TypeScript
- Vite for fast development and building
- Tailwind CSS for styling
- Three.js for 3D graphics
- React Globe GL for globe visualization
- Anthropic SDK for Claude AI integration
Backend Services
- Express.js serverless functions (Vercel)
- Fish Audio TTS integration for voice synthesis
- Open-Meteo API for weather data
- OpenWeatherMap for air quality data
Data Flow
User Interaction β Region Selection β API Data Fetch β Claude AI Analysis β Narrative Generation β Multi-Voice TTS β User Experience
π Environmental Data Sources
- Weather Data: Open-Meteo API (temperature, humidity, pressure, wind, precipitation, UV, visibility, clouds, solar radiation)
- Air Quality: OpenWeatherMap Air Pollution API (AQI, CO2, ozone, pollen)
- Calculated Parameters: Soil moisture, noise levels
π― Key Features Showcase
30-Second Demo
"EON Earth Saga transforms environmental data into immersive stories. Click any of 222 global regions to see real-time data analyzed by Claude AI, generating unique narratives that you can hear in multiple voices."
Key Demo Points
- Interactive Globe: "Explore 222 unique regions worldwide"
- Real-time Data: "Live environmental parameters from space"
- Claude AI Analysis: "Powered by Claude Sonnet 4.5"
- Multi-Voice TTS: "Hear stories in different voices"
- Advanced Features: "Search, bookmark, export data"
π§ Configuration
Environment Variables
# Anthropic Claude API (Required for AI narratives)
VITE_ANTHROPIC_API_KEY=your_api_key_here
# Fish Audio TTS (Required for voice features)
FISH_API_KEY=your_api_key_here
FISH_VOICE_ID=your_voice_id
FISH_TTS_ENDPOINT=https://api.fish.audio/v1/tts
Customization
- Add Regions: Edit
frontend/src/App.tsxregions array - Modify Claude Prompts: Update
frontend/src/services/claudeService.ts - Change Styling: Modify
frontend/src/index.cssand Tailwind config - Update APIs: Configure in
frontend/src/services/environmentalDataService.ts
π Performance
- Bundle Size: Optimized with code splitting
- Loading: Lazy loading for components
- Caching: Memoized calculations and API responses
- Rendering: React.memo for performance optimization
- API Calls: Efficient Claude API usage with fallback
π οΈ Development
Project Structure
earthstory/
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # React components
β β β βββ EarthGlobe.tsx
β β β βββ NarrativePanel.tsx
β β β βββ ThemeToggle.tsx
β β βββ services/ # API services
β β β βββ claudeService.ts # Claude AI integration
β β β βββ narrativeService.ts # Narrative orchestration
β β β βββ environmentalDataService.ts
β β βββ lib/ # Utilities
β β β βββ ttsClient.ts # Text-to-speech
β β βββ utils/ # Helper functions
β βββ dist/ # Build output
βββ server/ # Express serverless functions
β βββ index.js # TTS proxy server
βββ vercel.json # Vercel configuration
βββ package.json # Root package config
Key Components
App.tsx: Main application with 222 regions and data visualizationEarthGlobe.tsx: 3D globe visualizationNarrativePanel.tsx: Claude AI narrative display with TTSclaudeService.ts: Claude AI API integrationenvironmentalDataService.ts: Data fetchingttsClient.ts: Multi-voice text-to-speech
π€ Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Anthropic Claude AI for intelligent narrative generation
- Fish Audio for text-to-speech capabilities
- Open-Meteo for weather data
- OpenWeatherMap for air quality data
- Three.js for 3D graphics
- React Globe GL for globe visualization
π Support
- Repository: GitHub
- Issues: GitHub Issues
Built with β€οΈ for environmental awareness and storytelling
Transform data into stories. Explore the world through Claude AI-powered narratives.
Analysis
View
Metric
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Node.jsClaimed
- VercelClaimed
9 of 11 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig Β· Commits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
245 KB
Source files
25
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Cmk31311/Eon
41 files Β· 594 KB Β· @ d36f4b0
Structure
Interface
4 files Β· 10%Screens, components and styles rendered to the user.
API & routing
3 files Β· 7%Request entry points: routes, handlers and controllers.
Application logic
16 files Β· 39%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- TypeScript84%
- Markdown9%
- CSS3%
- JavaScript2%
- Python2%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm Β· 16- axios
- cors
- dotenv
- express
- react
- react-dom
- react-globe.gl
- three
- +8 more
frontend/package.json
npm Β· 14- @anthropic-ai/sdk
- axios
- react
- react-dom
- react-globe.gl
- three
- +8 more
server/package.json
npm Β· 3- cors
- dotenv
- express
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This projectβs features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.