Show HN:Brolly,一个纯文本天气预报站点

查看原文 HN 讨论

文章摘要

作者 jsax 的动机很具体:英国气象局(Met Office)最近改版了网站,加了大量留白、滚动和动画,可用性对他而言显著下降,他想要一个「一眼看完」的天气站点。于是有了 brolly.sh——一个极简的纯文本天气预报站。

功能覆盖得相当完整:全球任意地点的 7 天预报;前一日回顾(这样你可以确认昨天到底是更凉更热、更湿还是更干);逐小时的降雨、风、气温和天气状况;逐小时的紫外线、空气质量和花粉,在欧盟与英国境内还细分到具体花粉种类。

页面刻意设计成单列长滚动,为手机优化,桌面端也能看,只是左右留白很多。作者说自己从 plaintextsports.com 汲取了大量灵感——虽然他并不看体育,但很喜欢那种美学;不过他强调这不是照搬,Brolly 有自己的观感。他在可视化上花了很多时间,让所有图表只用字符实现,他最得意的是花粉计数用的逐小时热力图。

另一个设计要点是所有页面状态都编码进 URL:地点、选中的日期、展开或折叠的区块。他的原话是,交互式站点最让人恼火的一点,是你没法把一个页面分享给朋友并让对方看到和你一样的东西;把状态放进 URL 之后,你可以分享或收藏某个具体视图,而且知道自己总能回到它。

技术上,站点用 PocketBase,Go 加纯 HTML/JavaScript/CSS 编写,所有页面后端渲染,只用少量 JavaScript 在切换前后日时无跳动地重载内容。天气数据来自 open-meteo.com(免费额度很慷慨),并在 PocketBase 之上自建了一层 LRU 缓存。作者在 About 页对 AI 的表态也被评论区特别称赞:站点是他手工设计的,架构和结构由他定义;他用 AI 实现了相当大的一部分,但把最有意思的部分留给自己写。他说自己对 AI 感受复杂——没有它他根本没时间做出这个站,日常工作里也重度使用它来提速;但也有些地方他刻意不用,或是为了保住专注解决问题的乐趣,或是为了确保自己不会不小心「AI 刷屏」地过完一生。一切都是平衡。

实际页面长这样:顶部是当前状况(气温与体感、风速与阵风、UV、AQI、湿度与露点),接着是本周表格(含「昨天」一行),然后是逐小时状况表,再往下是全部用 ASCII 字符画出的降水、气温/湿度双轴、紫外线、空气质量和花粉图表,每个图表下方都附有图例和峰值时刻。

HN 评论精华

帖子拿到 228 分,讨论出奇地建设性——几乎全部是功能请求和技术细节,作者逐条认真回复。

最大的共同诉求:让它真的能被 curl

URL 短码之争

搜索是最集中的 bug

历史数据意外成为杀手功能

LLM 友好性被反复提到

功能请求清单

湿度(leonpillow,作者回复会加,还打算加湿球温度);日出日落时间和流星雨等天象(作者自己的清单);华氏度切换(bl4kersSaltyAstronaut,注意到 URL 里也没有单位设置);深色模式(m_walden,理由是照顾视觉不适的用户,并指出 wttr.in 就是深色的);Unicode 天气符号(benj111bluebarbet,作者说页面顶部的雨伞 logo 本身就是个 Unicode 字符,这个想法很契合);机场代码/ICAO 直达(leetrout 建议 brolly.sh/kjfksssilver 想要同样美学下的 METAR)。

weatherphan 给了一段颇有远见的提醒:一旦大家用上 Brolly,会立刻爱上它,随之而来的是功能请求的洪水;所以最好现在就设计好支持多样化定制所需的分层结构。他以航海场景为例——需要节为单位的风速、风向、露点,还要一段近期气压时序来判断天气系统尺度的形势;而且即使在航海这个细分里,需求差异也很大(摄氏还是华氏、hPa 还是英寸汞柱)。他建议把用户偏好也编码进 URL,让每个人都能得到属于自己的定制预报,同时保留常见场景的预制页面。作者回应说他也在考虑做覆盖这些用例的专门子页面,主页面只留一个入口区块——航海页确实可行。

性能与地理定位

情怀与同类项目