Veirt/weathr
CLILive in productionA terminal weather app with ASCII animations driven by real-time weather data.
a terminal weather app with ascii animation
- Rust96.5%
- Shell1.7%
- Nix1.2%
- Dockerfile0.6%
2 Reviews
Weathr is one of those rare terminal projects where the aesthetic idea and the practical utility actually reinforce each other. It is not just a weather CLI that prints a forecast, and it is not just ASCII art for novelty. The project turns live weather data into an animated terminal scene, with conditions like rain, snow, thunderstorms, fog, day and night cycles, and small environmental details such as planes or falling leaves. That gives it a distinct identity in a space where most weather tools feel interchangeable.
The repo also has stronger packaging discipline than I expected for a visual CLI project. The README gives users several routes in: Cargo, source build, Docker, Homebrew, MacPorts, AUR, Nix, and Winget. That matters because terminal tools live or die by install friction. The configuration story is also clear enough for regular users, with platform-specific config paths, manual coordinates, unit selection, location display modes, simulation flags, HUD controls, keyboard controls, and environment-variable behavior like NO_COLOR support.
The architecture looks reasonably serious. The source tree is split into animation, rendering, scene, theme, weather, geolocation, config, cache, app state, and CLI layers, which suggests the project is not just a single-file demo held together by terminal escape codes. The weather provider abstraction and provider documentation are good signs because they leave room for other APIs beyond Open-Meteo instead of hard-wiring the project permanently to one backend.
The strongest trust feature is that privacy is at least acknowledged directly. Auto-location uses an external IP geolocation service, but the README tells users this and explains that they can disable auto-location and use manual coordinates instead. For a weather app, that is the correct boundary: location convenience should be optional, visible, and easy to bypass.
The main weakness is verification depth. The project has real popularity and real packaging reach, but the README does not make the quality gates obvious. For something distributed across many platforms, I would want a clearer testing and release story: what gets checked before release, which platforms are actually validated, whether terminal behavior is tested across common shells, and how regressions in animation, config parsing, geolocation, API failures, and color/accessibility behavior are caught.
There are also a few trust-surface improvements that would make the project feel more mature. The quick install method uses the common curl-to-shell pattern, which is convenient but always benefits from extra caution: checksums, signed release artifacts, or a clearly documented manual download path. The privacy section could also be expanded into a small data-flow note explaining which external services are contacted, when they are contacted, what is cached locally, and how users can fully disable network calls except for weather fetching.
Overall: polished, memorable, and much more complete than a typical terminal toy. Weathr has strong presentation, broad installation support, a real architecture, and a clear user-facing identity. To level up further, it should make testing, release verification, platform support, privacy/data flow, and install-script trust more explicit. I would rate it as a strong creative CLI project with growing production maturity.
weathr has a very clear identity: it is not just a weather CLI, but a small terminal experience with animated rain, snow, thunderstorms, day/night scenes, airplanes, and HUD-style weather details. The README does a good job selling that quickly with GIF demos, then backs it up with practical install paths across Cargo, Docker, Homebrew, MacPorts, AUR, Nix, Winget, and source builds. That breadth matters for a terminal tool because the first adoption hurdle is usually “can I install this cleanly on my machine?”
The Rust codebase also looks thoughtfully organized. The split between config, geolocation, weather providers, rendering, scenes, animation, themes, and cache logic makes the project approachable despite the visual complexity. I especially like that provider support is abstracted through traits and documented in PROVIDERS.md; Open-Meteo is a sensible default, and the Met Office/provider-extension path gives the project room to grow beyond a single API. The CI workflow is stronger than many hobby CLIs: it runs check, tests, help smoke test, formatting, clippy with warnings denied, and cargo-audit. The release workflow is also ambitious, covering Linux, macOS, Windows, FreeBSD, musl targets, crates.io publishing, and Linux packages.
The main thing I would tighten is contributor onboarding. The README is excellent for users, but there is no obvious CONTRIBUTING.md, and the provider guide still has a few rough edges and typos. Since this project has real community attention, a short contribution guide explaining local test commands, provider expectations, release assumptions, and how to validate animation/rendering changes would make outside PRs easier to review. I would also consider documenting limitations around auto-location and external API failure modes more prominently, since privacy and reliability are central to a weather app that calls IP/location and weather services.
Overall, this is a polished and memorable Rust terminal project with strong packaging, good visual differentiation, and credible maintenance signals. With slightly better contributor docs and a bit more clarity around provider/runtime behavior, it would be even easier for new users and contributors to trust and extend.
