orijitghosh/kodama

GitHub: orijitghosh/kodama

将 GitHub 公开贡献数据渲染成每日自动更新的艺术盆景 SVG 图片,供开发者嵌入个人主页。

Stars: 15 | Forks: 0

# kodama 🌱 将你的 GitHub 历史绘制成一棵盆景。Commit 会生长出枝叶,已合并的 PR 会结出果实,Code review 会挂起灯笼,连续活跃记录会绽放花朵。你只需将一个图片 URL 放入你的个人主页 README 中,它就会每天根据你的真实数据重新绘制。 ![sindresorhus rendered by kodama](https://kodama-sigma.vercel.app/sindresorhus.svg) *一棵生动的树:[@sindresorhus](https://github.com/sindresorhus) 的公开 GitHub 历史,由该服务渲染并每天重新绘制。仅使用公开数据;他与本项目无关。可在[画廊](https://kodama-sigma.vercel.app/gallery)中查看更多内容。* ``` ![my kodama](https://kodama-sigma.vercel.app/YOUR_USERNAME.svg) ``` 这就是安装的全部过程:无需账号,无需配置,也不会存储任何关于你的信息。请在 [kodama-sigma.vercel.app](https://kodama-sigma.vercel.app) 尝试生成你的专属树。 ## 树的寓意 每一个元素都源自你公开的 GitHub 历史,并且你可以将其追溯到背后的具体数字。[语法页面](https://kodama-sigma.vercel.app/grammar)展示了哪种数据信号绘制了哪种元素,而任何一棵树的[凭据](https://kodama-sigma.vercel.app/tree/YOUR_USERNAME)都列出了确切的统计数据。 | 你的行为 | 树的展现形式 | |---|---| | 账号年龄 | 树干的粗细和弯曲度;花盆会在满 1 / 3 / 6 / 10 年时升级 | | 随时间推移的 Commit | 簇状叶丛 - 树只会不断生长 | | 本周的 Commit | 明亮的新芽 | | 已合并的 Pull Request | 柿子,从青涩逐渐成熟为金色 | | 开放的 Pull Request | 未成熟的青色果实 | | Code review | 纸灯笼,在夜间主题中点亮 | | 已关闭的 Issue | 栖息在树枝上的鸟(根据数量改变大小) | | 获得的 Star | 夜间主题中的萤火虫,白天主题中的蝴蝶(对数缩放 - 即使是巨佬也不会让画面白茫茫一片) | | 回答的 Discussion | 一只风铃 | | 当前连续活跃记录 | 花朵簇(一旦中断,花瓣会飘落一周 - 但树本身绝不会受到伤害) | | 史上最长连续活跃记录 | 永久烙印在土壤中的一圈淡淡花瓣印记 | | 当前季节 | 赏樱花期的盛开、盛夏的翠绿、秋天的赤金、花盆上的积雪 | 渲染过程是确定性的:在任何机器上,相同日期的相同历史都会生成完全相同的字节内容。你的树的形态由你自己的数据决定,因此它绝不会与任何人的树雷同。 ## 选项 所有配置都通过 URL 参数完成 - 专门设计为无需配置文件。 ``` https://kodama-sigma.vercel.app/.svg ?theme=ink|dusk|paper|sakura|yozakura|shore default: auto (dark/light aware) &scale=full|compact|strip|button 830×420 · 420×160 · 830×90 · 88×31 &animate=auto|off auto respects prefers-reduced-motion &tint=lang|none tint the foliage by top language &species=classic|momiji|ginkgo|sakura|fuji which plant to draw; default is the original bonsai &lang=en|ja|... language of the labels and alt-text (locale= also works) &date=YYYY-MM-DD draw a past day instead of today ``` `species` 是唯一能够改变植物种类的参数 - 可以将原版替换为日本枫树、银杏、樱花或紫藤。它会改变树叶、秋天的颜色、果实和花朵,但绝对不会触及任何统计数据:无论是叶丛、装饰物还是统计数目,本质上仍然是同一棵树。这只是一种个人选择,因此它并不像上表中那些读取自你公开历史的元素那样,代表你的任何特定信息。 `date` 参数会移动评估这棵树时所依据的日历时间,而不是改变其背后的历史:统计数据依然是今天(即你指定的那一天)读取到的最新数据。由于历史数据只更新到今天为止,因此无法指定未来的日期。 SVG 同时携带了两种配色方案,并根据阅读者的 `prefers-color-scheme` 设置自动切换,因此同一个 URL 无论在亮色还是暗色模式的 README 中都能完美适用。每一棵树还会在 ``/`<desc>` 中写入一行专门为屏幕阅读器提供的描述。 提供 88×31 的 `button` 缩放比例,专为怀念早期互联网徽章风格的用户准备。 ### 主题 `ink`(默认,月光色调) · `dusk` · `paper`(和纸) · `sakura`(樱花,偏向春季) · `yozakura`(夜樱) · `shore`(浮木与海玻璃)。请在[画廊](https://kodama-sigma.vercel.app/gallery)中查看所有主题。 ## 隐私 kodama 仅读取公开数据:也就是 GitHub 已经在你的个人主页上展示的那些相同的贡献统计。没有账号,无需登录,也没有用户数据库。缓存仅在很短的时间窗口内,以用户名为键保存已渲染的历史数据,除此之外不保存任何其他内容。你的用户名只会出现在你粘贴的 URL 和该缓存中;不会收集、存储或共享任何其他个人数据。绝对不会读取你的私密贡献。 ## 构建方式 这是一个 TypeScript monorepo: - **`engine/`** - 纯 SVG 渲染器。没有时钟、没有网络请求,除了基于种子的伪随机数生成器(PRNG)外没有任何随机性,因此 `render(history, date, options)` 是一个纯函数,并且可以通过提交的黄金文件进行测试。 - **`service/`** (`@kodama/api`) - 通过 GitHub 的 GraphQL API 获取你的公开历史数据,将其缓存,并提供图像服务。每一个失败路径仍然会返回一个带有 HTTP 200 状态码的有效 SVG,因此 README 绝不会显示出图裂开的情况。 - **`site/`** - 包含落地页、画廊、语法页面和凭据页面。 - **`api/`** - 轻量级的 Vercel 函数适配器。 ## 贡献 新主题是最容易贡献的部分:调色板仅仅是数据,并且黄金测试套件使得主题相关的 PR 非常容易审查。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE) © Arijit Ghosh。</div><div><strong>标签:</strong>OSV, SVG, Vercel, 个人主页, 后端开发, 威胁情报, 开发者工具</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>