TempTales: Global Temperature Explorer

Dashboards
Python
Shiny
DuckDB
Altair
Plotly
CI/CD
LLM
data visualization
An interactive Python Shiny dashboard for exploring 150 years of global temperature trends, with an AI assistant.
Author

Ian Gault

Published

May 1, 2026

Live Dashboard View on GitHub

TempTales is an interactive dashboard for exploring global and country-level temperature trends from 1860 to 2012. Users can select a country, compare two years side-by-side, view seasonal and monthly patterns, and see temperature shifts on a world heatmap. An AI assistant tab lets users query the data in natural language.

This project started as a UBC MDS group project (DSCI 532, 2026). This fork is a solo rebuild and improvement focused on production-readiness: adding CI, fixing test infrastructure, improving code quality, improving visualizations, and preparing for cloud redeployment on Posit Connect.

Features

  • Country explorer — select any country and view its full temperature history with trend overlay
  • Year comparison — pick two years and compare monthly/seasonal temperature profiles side-by-side
  • World heatmap — Plotly choropleth showing global average temperatures by year
  • AI assistant — natural-language querying of the dataset via GitHub Models API (GPT-4.1-mini) using chatlas + querychat

Technical stack

Area Tools
App framework Python Shiny (reactive server/UI separation)
Data backend DuckDB + ibis lazy expressions
Visualizations Altair (time-series, comparison charts), Plotly (choropleth map)
Testing pytest (62 unit tests) + Playwright (6 end-to-end UI tests)
CI/CD GitHub Actions — unit tests → Playwright UI tests on every push/PR
LLM integration GitHub Models API (gpt-4.1-mini) via chatlas + querychat
Deployment Posit Connect Cloud via GitHub integration

What I improved

Starting from the group’s original codebase, the solo rebuild focused on:

  • Wiring up a full GitHub Actions CI pipeline (unit + Playwright UI tests)
  • Fixing broken test infrastructure and expanding coverage to 62 unit + 6 UI tests
  • Refactoring server/UI separation for maintainability
  • Configuring cloud deployment on Posit Connect