<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aayush Bharadva</title>
    <description>The latest articles on DEV Community by Aayush Bharadva (@aayush-bharadva).</description>
    <link>https://dev.to/aayush-bharadva</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3987735%2Fdc475ee5-edbf-4f98-b97d-6b69b03e6034.png</url>
      <title>DEV Community: Aayush Bharadva</title>
      <link>https://dev.to/aayush-bharadva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aayush-bharadva"/>
    <language>en</language>
    <item>
      <title>Every commit you've ever pushed was feeding a tree. I built the thing that lets you meet it.</title>
      <dc:creator>Aayush Bharadva</dc:creator>
      <pubDate>Mon, 13 Jul 2026 06:53:29 +0000</pubDate>
      <link>https://dev.to/aayush-bharadva/every-commit-youve-ever-pushed-was-feeding-a-tree-i-built-the-thing-that-lets-you-meet-it-5ced</link>
      <guid>https://dev.to/aayush-bharadva/every-commit-youve-ever-pushed-was-feeding-a-tree-i-built-the-thing-that-lets-you-meet-it-5ced</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Overgrowth&lt;/strong&gt; grows a living, breathing generative tree out of a GitHub username — a portrait of how a person builds, drawn from every repo, language, star and late-night push.&lt;/p&gt;

&lt;p&gt;Type a name. Watch a few seconds of growth. Meet the tree you've been feeding for years without knowing it. Then the tree does something I didn't expect to love this much: &lt;strong&gt;it writes you a short poem about yourself — a little lantern-carrying wanderer walks in under the canopy to deliver it — and reads it to you out loud.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And because passion is also rivalry: hit &lt;strong&gt;⚔ vs&lt;/strong&gt; and grow two trees side by side — you and a friend, stat face-off between them, one shareable link.&lt;/p&gt;

&lt;p&gt;The challenge said &lt;em&gt;passion&lt;/em&gt; — rivalries, fandom, the World Cup. But the line that got me was &lt;strong&gt;"the love that fuels late-night side projects."&lt;/strong&gt; That love already has a data trail; GitHub just renders it as the least romantic thing imaginable — a grid of flat green squares. I wanted the same history to grow something that looks &lt;em&gt;alive&lt;/em&gt;. The emotional distance between "a chart of my commits" and "a tree my commits have visibly been feeding" is the entire project.&lt;/p&gt;

&lt;p&gt;And it's honest. Your abandoned repos are right there on the tree — bare, grey, leafless. Every builder has them. The tree doesn't hide its scars, and that's what makes it a portrait instead of a decoration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;Grow yours: &lt;a href="https://overgrowth-one.vercel.app" rel="noopener noreferrer"&gt;https://overgrowth-one.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type a username → the tree grows → a lantern-carrying wanderer delivers its poem → 🔊 hear it read aloud.&lt;/p&gt;

&lt;p&gt;Two trees I met this weekend, same API, opposite souls:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F49uzbtpzxn6w7xlh24he.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F49uzbtpzxn6w7xlh24he.png" alt="Overgrowth tree grown from @torvalds — a moonlit monolingual C giant" width="800" height="567"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;@torvalds — a moonlit monolingual C giant, 250k-star blossoms, bare dead limbs, leaning into the night&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqtupu5e8l19y5123us7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqtupu5e8l19y5123us7.png" alt="Overgrowth tree grown from @sindresorhus — a polyglot's dense multicolored canopy" width="800" height="567"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/sindresorhus"&gt;@sindresorhus&lt;/a&gt; — a polyglot's dense multicolored canopy in real linguist colors&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My favorite reading it produced, for a tree grown from 15 years of C:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Fed by 15 years of C — leaning into the late hours — 250,742 stars in blossom, 2 scars it doesn't hide."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ayushbharadva/overgrowth" rel="noopener noreferrer"&gt;https://github.com/ayushbharadva/overgrowth&lt;/a&gt;&lt;/strong&gt; — built entirely within the challenge window (see commit timestamps), AI-assisted with Claude Code, as the rules allow.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How behavior becomes biology.&lt;/strong&gt; The tree isn't a skin on a chart — builder behavior maps onto growth rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Years on GitHub + repos&lt;/strong&gt; → height and branching depth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push activity&lt;/strong&gt; → trunk thickness and growth speed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language diversity&lt;/strong&gt; → branching and canopy colors (GitHub's real linguist colors)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stars&lt;/strong&gt; → glowing blossoms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Late-night pushes&lt;/strong&gt; → the tree leans and grows crooked, reaching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abandoned repos (18+ months)&lt;/strong&gt; → bare grey branches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recency&lt;/strong&gt; → leaf color, vivid to brown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A seeded RNG (mulberry32) keyed off the username makes it &lt;strong&gt;deterministic&lt;/strong&gt;: your tree is yours. Regrow it tomorrow — same tree. Push for another year — it will have changed, because you did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The generative core&lt;/strong&gt; is Next.js + TypeScript + Canvas 2D. Three unauthenticated GitHub REST calls run from the browser and distill into growth parameters for a recursive branch system. Things I had to learn the hard way in one weekend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Negative gravitropism&lt;/strong&gt; — early trees curled into drooping ferns. Real branches spring back toward the sky, so mine track their cumulative angle from vertical and correct toward it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Depth-damped lean&lt;/strong&gt; — a night owl's lean compounded over nine branching levels turns a tree into a spiral. Damped by depth, the tree &lt;em&gt;bends&lt;/em&gt; instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaf-lightness floor&lt;/strong&gt; — C's linguist color is &lt;code&gt;#555555&lt;/code&gt;; without a minimum-lightness lift, Linus Torvalds' tree looked dead. Now it looks like a birch in moonlight, which felt right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blossoms in a second pass&lt;/strong&gt; — 250k stars were getting buried under the leaves they earned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Growth animates depth-by-depth via &lt;code&gt;requestAnimationFrame&lt;/code&gt;, then settles into idle sway with stars and fireflies — 60fps on the biggest trees I could find. Save your tree as PNG, share it with a &lt;code&gt;?u=&lt;/code&gt; link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tree's voice.&lt;/strong&gt; Every tree gets a deterministic one-line reading composed from its stats. When the full stack is live, that upgrades: &lt;strong&gt;Gemini&lt;/strong&gt; receives the tree's raw signals — years, languages, blossoms, scars, night-owl rhythm — and writes a 3-line poem &lt;em&gt;in the voice of the tree, addressed to its owner&lt;/em&gt;. A tiny lantern-carrying wanderer walks in from the dark, stops under your canopy, and types it out in a speech bubble — then &lt;strong&gt;ElevenLabs&lt;/strong&gt; reads it aloud. Hearing a calm voice say the words your abandoned repos became is genuinely a little emotional, and I built the thing.&lt;/p&gt;

&lt;p&gt;Both run behind two small serverless routes so no keys ever touch the client — and everything degrades gracefully: no backend, and you still get the tree and its written reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best use of Google AI&lt;/strong&gt; — Gemini receives each tree's raw growth signals (years, languages, blossoms, scars, night-owl rhythm) and writes a 3-line poem &lt;em&gt;in the voice of the tree, addressed to its owner&lt;/em&gt;. Structured output (schema-enforced JSON, thinking disabled) keeps draft scratch-work out of the poem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best use of ElevenLabs&lt;/strong&gt; — the tree then reads its poem aloud while a little lantern-carrying wanderer delivers it under the canopy. Serverless route, keys never touch the client, and it degrades gracefully to the written reading.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Try &lt;code&gt;torvalds&lt;/code&gt; next to &lt;code&gt;sindresorhus&lt;/code&gt;. Then try your own username — that's the whole point. Every builder has been growing one of these for years. Come meet yours. 🌿&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
      <category>creativecoding</category>
    </item>
  </channel>
</rss>
