SkyCast Ecosystem is a complete full-stack, multi-platform IoT environmental monitoring system designed to collect, process, visualize, and analyze real-time localized weather and air-quality data.
The system uses an ESP32 Development Board connected with environmental sensors to capture temperature, humidity, gas/smoke level, rain intensity, and air-quality related readings. These values are pushed to Firebase Realtime Database, where both the React Web Dashboard and the Native Android App listen for live updates.
The project also integrates AI-powered predictive insights using the Google Gemini API, historical data logging using the Google Sheets API, and regional baseline comparison using the Open-Meteo Weather API.
Full Stack Predictive IoT Environmental Ecosystem Web & Android
SkyCast is not just a weather dashboard.
It is a complete environmental intelligence ecosystem that combines:
- IoT-based sensor monitoring
- Cloud-based realtime data synchronization
- Web dashboard visualization
- Native Android mobile access
- AI-based environmental prediction
- Historical data logging
- Weather baseline comparison
┌────────────────────────────┐
│ IoT Hardware │
│ ESP32 + DHT11 + MQ2 + MH-RD │
└──────────────┬─────────────┘
│
│ Wi-Fi JSON Payload
▼
┌────────────────────────────┐
│ Firebase Realtime Database │
│ Central Cloud Data Hub │
└──────────────┬─────────────┘
│
┌────────┴────────┐
│ │
▼ ▼
┌───────────────┐ ┌────────────────┐
│ React Web App │ │ Android App │
│ Vite Dashboard│ │ Native Mobile │
└───────┬───────┘ └────────────────┘
│
├──────────────► Gemini API
│ AI Insights
│
├──────────────► Google Sheets API
│ Historical Logging
│
└──────────────► Open-Meteo API
Regional Comparison
SkyCast captures and displays live environmental data including:
- Temperature
- Humidity
- Gas / smoke level
- Rain intensity
- Air Quality Index estimation
- Timestamped sensor readings
The ESP32 reads sensor data from:
| Sensor | Purpose |
|---|---|
| DHT11 | Temperature and humidity monitoring |
| MQ2 | Gas, smoke, and air quality estimation |
| MH-RD Rain Module | Rain detection and rain intensity monitoring |
The processed sensor data is sent to Firebase as a structured JSON payload.
Firebase Realtime Database acts as the central state manager of the project.
It stores:
- Latest sensor values
- Historical telemetry
- Device status
- Dashboard-readable data
- Android app-readable data
Both the web dashboard and Android app listen to Firebase updates in real time.
The web dashboard is built using:
- React.js
- Vite
- CSS3 variables
- Custom glassmorphism UI
- GSAP animations
- Lenis smooth scrolling
- Chart.js or similar charting library
The dashboard provides a modern, interactive interface for visualizing environmental conditions.
SkyCast includes a custom 4-state dynamic theme system:
| Theme Mode | Description |
|---|---|
| Day | Bright daytime interface |
| Evening | Warm sunset-inspired interface |
| Night | Dark night mode interface |
| Auto | Automatically changes theme based on celestial math and system time |
The dashboard visualizes live sensor arrays using charts for:
- Temperature trends
- Humidity trends
- Rain intensity trends
- AQI / gas level trends
These charts help users understand environmental changes over time.
SkyCast also includes a native Android application built in Android Studio using Kotlin/Java.
The Android app connects directly to Firebase using google-services.json.
It displays real-time environmental readings from the same Firebase Realtime Database used by the web dashboard.
The dashboard can trigger the Gemini API to analyze current environmental readings and generate natural language insights such as:
- Weather safety warnings
- Air quality alerts
- Rain probability interpretation
- Environmental risk summaries
- Predictive condition analysis
Example use case:
If gas level rises and humidity drops, Gemini can generate a safety warning for possible smoke or poor air quality conditions.
SkyCast can export or append historical Firebase telemetry data to Google Sheets.
This allows:
- Long-term record keeping
- CSV-style data analysis
- Report generation
- Academic project documentation
- Environmental trend tracking
SkyCast can compare local sensor data with regional weather data from Open-Meteo.
This helps identify differences between:
- Local microclimate readings
- Regional forecast data
- Actual sensor-based environmental conditions
The project is organized as a single monorepo containing three major parts:
- ESP32 Firmware
- React Web Dashboard
- Native Android App
SKYCAST-ECOSYSTEM/
│
├── .github/
│
├── esp32-firmware/
│ ├── main.cpp
│ └── secrets.h
│
├── skycast-dashboard(Web-Dashboard)/
│ ├── .firebase/
│ ├── dist/
│ ├── node_modules/
│ ├── public/
│ ├── src/
│ ├── .env
│ ├── .firebaserc
│ ├── .gitignore
│ ├── eslint.config.js
│ ├── firebase.json
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── README.md
│ └── vite.config.js
│
├── SkyCast(Android-App)/
│ ├── .gradle/
│ ├── .idea/
│ ├── app/
│ ├── build/
│ ├── gradle/
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── local.properties
│ └── settings.gradle.kts
│
└── README.md
| Folder / File | Description |
|---|---|
.github/ |
Contains GitHub-related configuration files such as workflows, issue templates, or repository automation files. |
esp32-firmware/ |
Contains the ESP32 firmware code responsible for reading sensor data and sending it to Firebase. |
esp32-firmware/main.cpp |
Main ESP32 firmware source file written using C++ / Arduino framework. |
esp32-firmware/secrets.h |
Stores Wi-Fi and Firebase credentials locally. This file should not be committed publicly. |
skycast-dashboard(Web-Dashboard)/ |
Contains the React + Vite web dashboard for visualizing live environmental data. |
skycast-dashboard(Web-Dashboard)/src/ |
Main source code folder for React components, hooks, Firebase configuration, charts, themes, and dashboard logic. |
skycast-dashboard(Web-Dashboard)/public/ |
Contains static public assets used by the web dashboard. |
skycast-dashboard(Web-Dashboard)/dist/ |
Production build output generated by Vite. |
skycast-dashboard(Web-Dashboard)/.firebase/ |
Firebase Hosting cache/configuration folder generated during deployment. |
skycast-dashboard(Web-Dashboard)/.env |
Stores frontend environment variables such as Firebase config and Gemini API key placeholders. |
skycast-dashboard(Web-Dashboard)/firebase.json |
Firebase Hosting configuration file. |
skycast-dashboard(Web-Dashboard)/.firebaserc |
Firebase project alias/configuration file. |
skycast-dashboard(Web-Dashboard)/package.json |
Contains web dashboard dependencies and npm scripts. |
skycast-dashboard(Web-Dashboard)/vite.config.js |
Vite configuration file for the React dashboard. |
SkyCast(Android-App)/ |
Contains the native Android application project. |
SkyCast(Android-App)/app/ |
Main Android application module containing UI, activities, Firebase logic, and app resources. |
SkyCast(Android-App)/gradle/ |
Contains Gradle wrapper-related project files. |
SkyCast(Android-App)/build.gradle.kts |
Root Gradle Kotlin DSL build configuration file. |
SkyCast(Android-App)/settings.gradle.kts |
Android project settings file. |
SkyCast(Android-App)/gradle.properties |
Gradle configuration properties. |
SkyCast(Android-App)/gradlew |
Gradle wrapper script for Linux/macOS. |
SkyCast(Android-App)/gradlew.bat |
Gradle wrapper script for Windows. |
SkyCast(Android-App)/local.properties |
Local Android SDK path configuration. This file should not be committed publicly. |
README.md |
Main repository documentation file. |
| Component | Technology |
|---|---|
| Microcontroller | ESP32 Development Board |
| Programming | C++ / Arduino Framework |
| Temperature & Humidity | DHT11 |
| Gas / Smoke Detection | MQ2 |
| Rain Detection | MH-RD Raindrop Module |
| Feature | Technology |
|---|---|
| Realtime Database | Firebase Realtime Database |
| Hosting | Firebase Hosting |
| Cloud Data Sync | Firebase SDK |
| Historical Logging | Google Sheets API |
| Feature | Technology |
|---|---|
| Framework | React.js |
| Build Tool | Vite |
| Styling | CSS3 Variables |
| UI Style | Glassmorphism |
| Animation | GSAP |
| Smooth Scrolling | Lenis |
| Charts | Chart.js or similar |
| Theme Engine | Custom Day / Evening / Night / Auto system |
| Feature | Technology |
|---|---|
| Platform | Native Android |
| IDE | Android Studio |
| Language | Kotlin / Java |
| Database Integration | Firebase Realtime Database |
| Config File | google-services.json |
| API | Purpose |
|---|---|
| Google Gemini API | AI predictive environmental insights |
| Google Sheets API | Exporting and appending historical data |
| Open-Meteo API | Regional weather baseline comparison |
The ESP32 reads values from:
DHT11 -> Temperature and Humidity
MQ2 -> Gas / Smoke Level
MH-RD -> Rain Intensity
The ESP32 processes raw sensor values and prepares a JSON payload.
Example structure:
{
"temperature": 31.5,
"humidity": 64,
"gasLevel": 420,
"rainValue": 280,
"aqi": 78,
"deviceStatus": "online",
"timestamp": "2026-05-22T10:30:00"
}
The ESP32 sends the processed JSON data to Firebase Realtime Database over Wi-Fi.
Both the React dashboard and Android app listen to Firebase references.
Whenever Firebase data changes:
Firebase Update -> Web Dashboard Updates Instantly
Firebase Update -> Android App Updates Instantly
The user can trigger Gemini AI from the dashboard.
The dashboard sends the latest Firebase sensor state to Gemini and receives an AI-generated predictive insight.
The dashboard can sync Firebase history data to Google Sheets for long-term storage and analysis.
The web dashboard includes:
- Realtime Firebase sensor cards
- Glassmorphism UI layout
- Live environmental charts
- Dynamic theme switching
- AI insight panel
- Google Sheets export action
- Open-Meteo comparison section
- Smooth animations and transitions
- Responsive layout for desktop and mobile screens
The Android application includes:
- Native Android interface
- Firebase Realtime Database listener
- Live temperature, humidity, rain, and AQI display
- Device status monitoring
- Mobile-friendly environmental overview
- Shared data source with the web dashboard
This project uses sensitive credentials such as:
- Firebase API keys
- Wi-Fi SSID and password
- Gemini API key
- Google Sheets API credentials
These values should never be committed directly to GitHub.
Use ignored files such as:
secrets.h.envgoogle-services.json
Recommended placeholder format for ESP32 secrets:
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"
#define FIREBASE_HOST "YOUR_FIREBASE_DATABASE_URL"
#define FIREBASE_AUTH "YOUR_FIREBASE_DATABASE_SECRET"
For Vite environment variables:
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_DATABASE_URL=your_database_url
VITE_GEMINI_API_KEY=your_gemini_api_key
VITE_OPEN_METEO_BASE_URL=https://api.open-meteo.com
git clone https://github.com/LakshyaSharma2005/SkyCast-Ecosystem.git
cd SkyCast-Ecosystem
Navigate to the firmware folder:
cd esp32-firmware
Create a secrets.h file:
#ifndef SECRETS_H
#define SECRETS_H
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"
#define FIREBASE_HOST "YOUR_FIREBASE_DATABASE_URL"
#define FIREBASE_AUTH "YOUR_FIREBASE_DATABASE_SECRET"
#endif
Upload the firmware to the ESP32 using Arduino IDE or PlatformIO.
Navigate to the dashboard folder:
cd "skycast-dashboard(Web-Dashboard)"
Install dependencies:
npm install
Create a .env file:
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_DATABASE_URL=https://your_project.firebaseio.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_GEMINI_API_KEY=your_gemini_api_key
VITE_OPEN_METEO_BASE_URL=https://api.open-meteo.com
Run the development server:
npm run dev
Build for production:
npm run build
Deploy to Firebase Hosting:
firebase deploy
Open the following folder in Android Studio:
SkyCast(Android-App)
Then:
- Add your Firebase
google-services.jsonfile inside the Android app module. - Sync Gradle.
- Build the project.
- Run the app on an emulator or physical Android device.
{
"skycast": {
"latest": {
"temperature": 31.5,
"humidity": 64,
"gasLevel": 420,
"rainValue": 280,
"aqi": 78,
"deviceStatus": "online",
"timestamp": "2026-05-22T10:30:00"
},
"history": {
"reading_001": {
"temperature": 31.5,
"humidity": 64,
"gasLevel": 420,
"rainValue": 280,
"aqi": 78,
"timestamp": "2026-05-22T10:30:00"
}
},
"aiInsights": {
"latestInsight": "Air quality is moderate. Rain intensity is low. Conditions are currently safe."
}
}
}
{
"temperature": 29.8,
"humidity": 71,
"gasLevel": 350,
"rainValue": 120,
"aqi": 65,
"rainStatus": "Light Rain",
"deviceStatus": "online",
"timestamp": "2026-05-22T12:15:00"
}
Current conditions show moderate humidity and low gas concentration.
Rain intensity is increasing slightly, which may indicate light rainfall.
Air quality is currently acceptable, but continued monitoring is recommended.
SkyCast can be used for:
- Academic IoT projects
- Smart city environmental monitoring
- Localized weather stations
- Air quality observation
- Rain detection systems
- AI-based environmental warning systems
- College major project demonstrations
- Full-stack IoT portfolio project
The main goals of this project are:
- Build a complete IoT-to-cloud ecosystem
- Display live environmental data on web and mobile platforms
- Use Firebase as a realtime data hub
- Apply AI for predictive safety insights
- Store historical data for analysis
- Create a beautiful and modern dashboard UI
- Demonstrate full-stack development, IoT, cloud, mobile, and AI integration
This project follows these development principles:
- Modular folder structure
- Clean separation of concerns
- Secure credential handling
- Reusable React hooks
- Dumb UI components where possible
- Realtime-first architecture
- Mobile and web platform consistency
- Cloud-based data synchronization
- AI-assisted environmental analysis
| Module | Status |
|---|---|
| ESP32 Firmware | In Progress |
| Firebase Realtime Database | In Progress |
| React Web Dashboard | In Progress |
| Android App | In Progress |
| Gemini AI Integration | Planned / In Progress |
| Google Sheets Export | Planned / In Progress |
| Open-Meteo Comparison | Planned / In Progress |
Possible future improvements include:
- User authentication
- Admin dashboard
- Push notifications
- Offline Android caching
- Advanced AQI calculation
- Multi-device support
- Location-based sensor mapping
- Additional sensors such as BMP280, LDR, or PM2.5
- Historical analytics dashboard
- Automated AI warning system
- Progressive Web App support
Add screenshots of your project here:
- Web Dashboard Screenshot
- Android App Screenshot
- ESP32 Hardware Setup Screenshot
- Firebase Database Screenshot
- Google Sheets Logging Screenshot
Example image paths:



Through this project, the following concepts are demonstrated:
- IoT hardware integration
- ESP32 firmware development
- Sensor data acquisition
- Firebase Realtime Database usage
- React.js frontend development
- Native Android development
- API integration
- AI-based prediction
- Data visualization
- Cloud hosting
- Full-stack monorepo project management
Contains the ESP32 firmware code responsible for:
- Reading DHT11 data
- Reading MQ2 analog data
- Reading MH-RD rain sensor data
- Calculating environmental values
- Connecting to Wi-Fi
- Sending JSON data to Firebase
Contains the React + Vite web dashboard responsible for:
- Displaying live sensor values
- Listening to Firebase changes
- Rendering charts
- Managing themes
- Triggering Gemini AI insights
- Exporting data to Google Sheets
- Comparing data with Open-Meteo
Contains the native Android application responsible for:
- Connecting to Firebase
- Displaying live environmental data
- Providing mobile access to SkyCast readings
- Showing device and sensor status
SkyCast is suitable as a major academic project because it combines multiple important computer science and engineering domains:
- Internet of Things
- Cloud Computing
- Web Development
- Android Development
- Artificial Intelligence
- Data Analytics
- API Integration
- Realtime Systems
- Environmental Monitoring
Lakshya Sharma
GitHub: LakshyaSharma2005
Repository: SkyCast-Ecosystem
This project is intended for academic and learning purposes.
You may add a license such as:
- MIT License
- Apache License 2.0
depending on your project requirements.
If you like this project, consider giving the repository a star on GitHub.
SkyCast Ecosystem is a complete full-stack IoT environmental monitoring platform that connects ESP32-based hardware, Firebase cloud infrastructure, a React web dashboard, a native Android app, AI-powered prediction, spreadsheet logging, and weather API comparison into one unified ecosystem.
It demonstrates how modern IoT systems can combine embedded hardware, realtime cloud databases, beautiful user interfaces, mobile access, and artificial intelligence to create practical environmental intelligence solutions.