CLI tool · 2026
skycast
Weather in the terminal: ASCII art, color-coded temperatures, forecasts and comparisons.
- Status
- Live
In short
A command-line weather app for any place on Earth. “skycast Istanbul” shows the current weather with ASCII art; forecast, hourly and compare add up to 16 days, hourly sparklines and cities side by side. No API key: the data comes from Open-Meteo.
Why it exists
Most weather CLIs are a curl one-liner or a thin API wrapper. I wanted one built like a product: output that stays readable at 30 columns and in a pipe, errors that say what to do next, and a test suite that proves it.
My part
All of it — design, code, tests, CI and the npm release.
Highlights
- Any place on Earth; asks only when a name is truly ambiguous
- English and Turkish, metric and imperial, picked from the system locale
- Versioned --json output and meaningful exit codes for scripts
- Works offline from a cache, with a clear warning
- Shell completion for bash, zsh and fish
- One bundled file with zero runtime dependencies
Decisions
- 01
Providers behind an interface
API responses are validated with Zod and mapped to domain models at the edge. Commands and renderers never see Open-Meteo, so another weather API is one new provider away.
- 02
Layouts that degrade, not overflow
Tables drop their least important columns first and every view is tested down to 30 columns. Colors fall back from truecolor to 256 and 16, and disappear in pipes or with NO_COLOR.
- 03
Tested against real responses
Over 400 tests run on recorded API responses: snapshot views, a layout sweep from 30 to 160 columns and end-to-end runs of the built CLI, on Linux, macOS and Windows with Node 20, 22 and 24.
Stack
- Node.js
- TypeScript
- Commander.js
- Zod
- Vitest
- Open-Meteo