This is a submission for Weekend Challenge: Earth Day Edition
What Inspired Me
Last month I scrolled past three climate headlines before breakfast. Record heat. Melting ice. Endangered species. Each one felt like a notification from a planet I'd muted.
The problem isn't data โ we have more climate data than ever. The problem is that data doesn't talk to you. It shows you a chart, you nod, you scroll on. What if the data knew you? What if it said "you specifically could cut 1.5 tonnes by switching your electricity provider" instead of "global temperatures rose 0.1ยฐC"?
That question became Planetary Pulse: not another doom dashboard, but a planetary health companion that sees the big picture, knows your habits, and tells you exactly what to do about it.
I also wanted to prove something: that you can integrate six different technologies in a weekend without it feeling like a Frankenstein app. Each tech solves a real problem โ not a checkbox.
What I Built
Planetary Pulse is a full-stack environmental dashboard with four interactive tabs, seven climate datasets, an AI assistant that remembers you, a carbon calculator, and a blockchain-verified carbon credit marketplace.

The main dashboard: health score ring, 7 environmental metrics, animated globe, trend chart, and AI-powered insights panel
Key features:
- ๐ Real-time dashboard with 7 environmental metrics from NASA, NOAA, NSIDC, IRENA, WWF via Snowflake
- ๐ค AI climate assistant with Backboard persistent memory that learns your habits across sessions
- ๐ง Gemini-powered analysis โ structured JSON insights, not generic chatbot responses
- ๐ Auth0-secured user accounts with scoped AI agent tokens
- ๐ช Solana-tracked carbon credit marketplace with on-chain retirement
- ๐งฎ IPCC-based calculator for personal carbon footprint with 8 transport modes and 5 diet types
Demo
๐ Live Demo: https://planetary-pulse-fgdk.onrender.com
Works with zero API keys โ all integrations have realistic mock fallbacks. Add keys to unlock live data.
The Four Tabs

AI Assistant: Backboard-powered persistent memory remembers your EV, your diet, your solar panel interest across sessions

Personal Carbon Calculator: IPCC AR6 calibrated, compares you against global average and 1.5ยฐC target

Carbon Credit Marketplace: browse verified projects, retire on Solana, track cumulative impact
Code
๐ Source Code: https://github.com/mamoor123/Planetary-Pulse
mamoor123
/
Planetary-Pulse
๐ Planetary Pulse โ AI-Powered Earth Dashboard with Backboard, Auth0, Gemini, Snowflake, Solana & GitHub Copilot
๐ Planetary Pulse
โจ AI-Powered Earth Health Dashboard
See the planet. Understand it. Act on it.
Real-time climate data ยท AI-powered insights ยท Personal carbon tracking ยท Blockchain-verified credits
๐ Quick Start ยท ๐ธ Screenshots ยท ๐๏ธ Architecture ยท ๐ ๏ธ Tech Stack ยท ๐ API
๐ฅ The Problem
๐ก๏ธ +1.48ยฐC above pre-industrial levels. 421 ppm COโ โ highest in 3 million years. 1 million species at extinction. 10 million hectares of forest lost every year.
Climate data is everywhere. But it's disconnected, impersonal, and overwhelming. We see charts. We feel bad. We scroll on.
Planetary Pulse changes that.
๐ก The Solution
๐ง From Data โ Understandingโฆ |
git clone https://github.com/mamoor123/Planetary-Pulse.git
cd Planetary-Pulse
npm install
cp .env.example .env # Optional
npm start
# Open http://localhost:3000
How I Built It
The Architecture That Makes It Work Offline
The biggest engineering decision: every integration falls back to mock data automatically. The app tries the real API, catches any failure, and serves cached datasets with real climate values. This means:
- Judges can evaluate without API keys โ
- The demo never breaks โ
- You can develop without hitting rate limits โ
- Each route file is self-contained:
server/routes/backboard.js,gemini.js,snowflake.js,solana.js,carbon.js
The frontend is vanilla HTML/CSS/JS โ no React, no build step. One index.html + app.js + style.css. The dark theme, animated CSS globe, SVG health ring, and tab system are all hand-coded. I chose this deliberately: you don't need a framework to ship something polished.
๐ฃ Backboard โ The AI That Actually Remembers You
This is what makes the assistant feel alive. Most AI chatbots start from zero every session. Backboard gives it persistent memory โ it automatically extracts facts from conversations and surfaces them contextually.
// Create assistant with climate expertise
const assistant = await backboardFetch('/assistants', {
method: 'POST',
body: JSON.stringify({
name: 'Planetary Pulse Climate Assistant',
system_prompt: `You are a climate science expert...`,
model: 'google/gemini-2.0-flash',
}),
});
// Each message auto-persists state + memory
const response = await backboardFetch(`/threads/${threadId}/messages`, {
method: 'POST',
body: JSON.stringify({ content: message, stream: false }),
});
The frontend shows a "Persistent Memory" panel displaying extracted facts in real-time. When the assistant says "I remember you drive an EV โ that's already ahead of average!" โ that's Backboard working.
๐ Auth0 for Agents โ Security That Delegates
Auth0 handles user login and mints scoped tokens for the AI agent. Most AI demos skip auth entirely โ this one doesn't.
app.use(auth({
authRequired: false,
auth0Logout: true,
baseURL: 'http://localhost:3000',
clientID: process.env.AUTH0_CLIENT_ID,
issuerBaseURL: `https://${process.env.AUTH0_DOMAIN}`,
}));
// Scoped agent token for AI delegation
app.get('/api/auth/agent-token', (req, res) => {
if (!req.oidc?.isAuthenticated()) return res.status(401).json({ error: 'Not authenticated' });
res.json({ agent_token: req.oidc.accessToken, user_id: req.oidc.user.sub });
});
The pattern: user authenticates โ delegates specific capabilities to AI via scoped tokens. The user controls what the AI can see.
๐ต Google Gemini โ Structured Intelligence, Not Chatbot Vibes
I don't use Gemini as a chatbot. I use it as a structured analysis engine. Three endpoints, each with a specific JSON schema:
// POST /api/gemini/analyze โ structured climate metric analysis
// POST /api/gemini/personal-plan โ personalized action plans
// POST /api/gemini/interpret-data โ human-readable data interpretation
const response = await fetch(`${GEMINI_URL}?key=${GEMINI_API_KEY}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
contents: [{ parts: [{ text: analysisPrompt }] }],
generationConfig: { temperature: 0.7, maxOutputTokens: 2048 },
}),
});
The key insight: schema-first prompting. I define the exact JSON shape I want and Gemini reliably returns parseable output. No regex parsing, no fragile text extraction. The AI Insights panel renders directly from Gemini's structured response.
๐ท Snowflake โ Seven Real Datasets, Not Toy Data
// Parameterized queries with year filtering
let sql = `SELECT year, value, source FROM ${dataset}_data WHERE 1=1`;
if (fromYear) sql += ` AND year >= ?`;
if (toYear) sql += ` AND year <= ?`;
sql += ` ORDER BY year`;
Seven datasets spanning 1880โ2024 from authoritative sources:
| Dataset | Source | Range |
|---|---|---|
| Global Temperature | NASA GISS | 1880โ2024 |
| COโ Concentration | NOAA Mauna Loa | 1960โ2024 |
| Sea Level Rise | NASA/NOAA | 1993โ2024 |
| Arctic Sea Ice | NSIDC | 1980โ2024 |
| Tree Cover Loss | Global Forest Watch | 2001โ2023 |
| Renewable Capacity | IRENA | 2010โ2024 |
| Biodiversity Index | WWF/ZSL | 1970โ2020 |
๐ฃ Solana โ Proof of Impact on Chain
When you retire a carbon credit, it's not just a button click โ it's a real Solana transaction you can verify on Explorer.
const burnTx = new Transaction().add(
createBurnInstruction(
creditTokenAccount, CREDIT_MINT,
keypair.publicKey, tonnes * 1e9
)
);
const signature = await connection.sendTransaction(burnTx, [keypair]);
The marketplace shows four credit types (Amazon Reforestation, Texas Wind Farm, Indonesia Mangrove, Direct Air Capture) with real pricing and certification standards. Each retirement updates your cumulative impact: trees planted, car miles offset, flight hours neutralized.
๐ข GitHub Copilot โ The Weekend Multiplier
Copilot didn't just autocomplete โ it changed what was possible in 48 hours. Here's exactly what it handled:
| Task | Without Copilot | With Copilot | Time Saved |
|---|---|---|---|
| Express route scaffolding (5 files) | ~3 hours | ~30 min | 2.5 hrs |
| CSS globe animation + pulse rings | ~2 hours | ~20 min | 1.7 hrs |
| SVG health ring with gradients | ~1.5 hours | ~15 min | 1.25 hrs |
| IPCC emission factor research | ~1 hour | ~10 min | 50 min |
| Responsive CSS grid breakpoints | ~1 hour | ~15 min | 45 min |
| Carbon calculator logic | ~2 hours | ~25 min | 1.6 hrs |
| Total | ~10.5 hours | ~2 hours | ~8.5 hours |
I'd write a comment like // Calculate carbon footprint for car commute: distance km, days per week and Copilot would generate the full function with IPCC-calibrated factors. The trick is knowing what to ask and always reviewing what it generates.
Without Copilot, this is a one-week project. With it, I shipped in a weekend.
Prize Categories
This submission qualifies for all six prize categories:
| Category | What We Built | Key File |
|---|---|---|
| ๐ฃ Best use of Backboard | AI assistant with persistent memory, auto fact extraction, cross-session state | server/routes/backboard.js |
| ๐ Best use of Auth0 for Agents | User auth + scoped agent token minting for AI delegation | server/index.js |
| ๐ต Best use of Google Gemini | 3 structured JSON endpoints: analysis, plans, interpretation | server/routes/gemini.js |
| ๐ท Best use of Snowflake | 7 climate datasets (NASA, NOAA, WWF) with parameterized SQL | server/routes/snowflake.js |
| ๐ข Best use of GitHub Copilot | Accelerated entire codebase: scaffolding, animations, charts, calculator | Whole project |
| ๐ฃ Best use of Solana | Carbon credit marketplace with on-chain burn-for-retire | server/routes/solana.js |
What I Learned
Backboard's auto-extraction is the future of AI assistants. No manual memory management โ it just works. This is how every AI app should remember users.
Structured output > free-form prompting. Schema-first Gemini calls produce reliable, parseable JSON every time. I'll never go back to regex-parsing chatbot responses.
Mock fallbacks aren't a hack โ they're architecture. Building dual-path (live API โ cached fallback) from the start made the entire app demo-proof. No "it works on my machine."
Solana devnet surprised me. Expected blockchain friction, got instant transactions and a real explorer. The UX gap between "retire a credit" and "see the tx on Solana Explorer" is 3 seconds.
Copilot changed my project scope. What used to be "build a dashboard" became "build a dashboard + AI assistant + calculator + blockchain marketplace" โ because the boilerplate was free.
Auth0 for Agents is the missing piece in AI apps. Most demos skip auth. Scoped tokens enable real delegation patterns where users control what the AI can access.
What Makes This Different
Most Earth Day submissions fall into two buckets: "here's a carbon calculator" or "here's an AI chatbot about nature." Planetary Pulse is different because:
- The data is real โ 7 datasets from NASA, NOAA, WWF spanning 144 years
- The AI remembers โ Backboard gives the assistant cross-session memory
- The blockchain is real โ actual Solana transactions, not just a UI mockup
- The app works everywhere โ zero-config mock fallbacks mean no broken demos
- Six technologies, one story โ not six integrations bolted together, but six solutions to six real problems
Future Enhancements
- Real-time WebSocket data feeds from live climate APIs
- Community leaderboards and shared climate goals
- Mobile PWA for install-on-home-screen experience
- MCP integration for the Auth0 + Backboard agent
The planet is worth building for. ๐๐
This article was originally published by DEV Community and written by mamoor123.
Read original article on DEV Community