WTHR is a focused weather application built for clarity. Rather than a single app serving a global user base through geolocation prompts or search UIs, each instance is deployed to its own subdomain tied to a specific location — msu.wthr.today for East Lansing, slc.wthr.today for Salt Lake City, and so on.
Built with Next.js and deployed on Vercel, the app pulls weather data from two sources: Tomorrow.io for real-time and forecast data, and the National Weather Service API for official US observations and alerts. Natural language weather summaries are generated via a configurable AI backend — Claude or OpenAI, depending on what you have available.
The design philosophy is deliberately minimal — no ad slots, no metric farms, no cluttered dashboards. Atmosphere and sky conditions are rendered in real time using Three.js, giving each location a visual environment that reflects actual current conditions rather than a static icon. Clean, purposeful, and pixel-perfect.
Source is available on GitHub.
Multi-Tenant
WTHR is built as a true multi-tenant application. Each subdomain is an independent tenant with its own location configuration, API keys, and environment — sharing the same codebase and deployment pipeline while remaining fully isolated from every other instance. Adding a new city means provisioning a new tenant, not forking the project. It's the same model used by large-scale SaaS platforms, applied to something as simple as a weather app.


