<?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: nitr0yukkuri</title>
    <description>The latest articles on DEV Community by nitr0yukkuri (@nitr0yukkuri).</description>
    <link>https://dev.to/nitr0yukkuri</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%2F4079013%2F1cdb6194-48bc-4b15-a63b-5a08c51e4545.png</url>
      <title>DEV Community: nitr0yukkuri</title>
      <link>https://dev.to/nitr0yukkuri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nitr0yukkuri"/>
    <language>en</language>
    <item>
      <title>Beyond Color: Designing Language-Specific Planets with Three.js</title>
      <dc:creator>nitr0yukkuri</dc:creator>
      <pubDate>Tue, 03 Nov 2026 06:35:17 +0000</pubDate>
      <link>https://dev.to/nitr0yukkuri/beyond-color-designing-language-specific-planets-with-threejs-3en8</link>
      <guid>https://dev.to/nitr0yukkuri/beyond-color-designing-language-specific-planets-with-threejs-3en8</guid>
      <description>&lt;p&gt;Changing a planet’s base color is a useful first signal, but it does not make two planets feel like different worlds. For GitHub Planet, we wanted programming languages to be recognizable through surface structure, motion, and silhouette as well as color.&lt;/p&gt;

&lt;p&gt;The project turns GitHub profile data into an interactive 3D planet. This article focuses on one design problem: how do you give each language a distinct visual identity without making the planet unreadable?&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the effect carry meaning
&lt;/h2&gt;

&lt;p&gt;A different color is easy to notice, but it is a weak visual metaphor on its own. We chose a visual idea for each language, then used the shader effect to support that idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript:&lt;/strong&gt; a layered, defensive shell around a structured surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go:&lt;/strong&gt; flowing atmospheric wind that moves around the planet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kotlin:&lt;/strong&gt; electric arcs that flicker around the planet’s silhouette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rust:&lt;/strong&gt; a dry desert surface with drifting dust.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to turn every planet into a completely different object. The shared globe keeps the experience coherent; the material and motion make each language feel distinct.&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript: build the identity in layers
&lt;/h2&gt;

&lt;p&gt;The TypeScript planet keeps a textured base surface and adds translucent shell layers. Its shader uses a time uniform to move bands and filaments across those layers. That makes the “typed shell” feel active while the planet underneath remains visible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxb5ryxohb1zeq4rpenrv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxb5ryxohb1zeq4rpenrv.gif" alt="Animated TypeScript planet showcase" width="719" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://githubplanet.dev/showcase/typescript" rel="noopener noreferrer"&gt;Try the TypeScript showcase&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Go: make the atmosphere move
&lt;/h2&gt;

&lt;p&gt;For Go, the visual metaphor is wind. A moving atmospheric pattern gives the planet a sense of flow instead of adding another static ring. The direction and timing of that effect are driven by shader uniforms, so the motion is part of the material rather than a separate video.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0356qew80gystn4tt2nx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0356qew80gystn4tt2nx.gif" alt="Animated Go planet showcase" width="719" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://githubplanet.dev/showcase/go" rel="noopener noreferrer"&gt;Try the Go showcase&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep comparisons fair
&lt;/h2&gt;

&lt;p&gt;A visual comparison is hard to judge if the sample data changes at the same time as the shader. GitHub Planet’s language showcases use fixed sample values, including the same total and weekly commit counts, so you can focus on how the materials differ. They are demo values, not a real user’s GitHub activity.&lt;/p&gt;

&lt;p&gt;That small choice makes the showcase useful as a design review tool: change the visual treatment, keep the underlying example steady, and compare again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things we learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start with a metaphor, then choose the shader.&lt;/strong&gt; “Wind” and “layered shell” lead to clearer effects than “make it glow.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protect the silhouette.&lt;/strong&gt; Effects should help identify the planet without hiding its surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a stable comparison case.&lt;/strong&gt; Fixed demo data helps reveal whether a visual change actually improved the language identity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GitHub Planet is open source, and the language showcases can be explored without signing in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://githubplanet.dev/" rel="noopener noreferrer"&gt;Explore the showcases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nitr0yukkuri/githubplanet" rel="noopener noreferrer"&gt;View the source code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you work with Three.js materials or shader-driven interfaces, I’d love to hear how you make visual differences readable without relying on color alone.&lt;/p&gt;

</description>
      <category>threejs</category>
      <category>javascript</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How We Turned GitHub Activity Into a Living 3D Planet</title>
      <dc:creator>nitr0yukkuri</dc:creator>
      <pubDate>Tue, 03 Nov 2026 06:24:38 +0000</pubDate>
      <link>https://dev.to/nitr0yukkuri/how-we-turned-github-activity-into-a-living-3d-planet-1dp</link>
      <guid>https://dev.to/nitr0yukkuri/how-we-turned-github-activity-into-a-living-3d-planet-1dp</guid>
      <description>&lt;p&gt;GitHub activity is usually shown as numbers, charts, and a contribution graph. We wondered: what if the history of building software could become something you can explore?&lt;/p&gt;

&lt;p&gt;That question became &lt;strong&gt;GitHub Planet&lt;/strong&gt;, an open-source project that turns GitHub activity into an interactive 3D world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzpafwukrrcyoqb05mbwi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzpafwukrrcyoqb05mbwi.gif" alt="Animated GitHub Planet profile card for nitr0yukkuri" width="600" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://githubplanet.dev/card.html?username=nitr0yukkuri&amp;amp;fix=true" rel="noopener noreferrer"&gt;Open the interactive planet card&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From data to a planet
&lt;/h2&gt;

&lt;p&gt;GitHub Planet uses GitHub OAuth and GitHub REST/GraphQL data to collect repository languages and activity signals. Language data shapes the planet’s visual identity. Contributions help shape its growth, achievements, and surrounding stars. The goal is to make a profile feel less like a static summary and more like a world that reflects how someone builds software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Languages become materials
&lt;/h2&gt;

&lt;p&gt;We wanted each language to feel distinct beyond its color. TypeScript gets a defensive layered shell, Go gets flowing atmospheric wind, and Kotlin gets crystalline structures. Rust has a desert surface with drifting dust.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxb5ryxohb1zeq4rpenrv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxb5ryxohb1zeq4rpenrv.gif" alt="Animated TypeScript planet showcase" width="719" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The planet is rendered with Three.js and WebGL. The application uses Node.js and Express, with PostgreSQL for persistence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pushes become meteors
&lt;/h2&gt;

&lt;p&gt;GitHub Planet can receive GitHub Push webhook events and relay them through Socket.IO. When an event reaches an open browser, it appears as a meteor. Its color and size reflect the changed language and amount. Activity becomes a moment in the world instead of staying only in a log.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch the planet in motion
&lt;/h2&gt;

&lt;p&gt;The project has a three-minute walkthrough showing the experience in motion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=CCS0Yz_eVxU" rel="noopener noreferrer"&gt;Watch the GitHub Planet walkthrough on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it without signing in
&lt;/h2&gt;

&lt;p&gt;The language showcases use fixed sample data, so you can compare the visual treatments without signing in or relying on production user data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://githubplanet.dev/showcase/typescript" rel="noopener noreferrer"&gt;Try the TypeScript showcase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://githubplanet.dev/" rel="noopener noreferrer"&gt;Explore GitHub Planet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nitr0yukkuri/githubplanet" rel="noopener noreferrer"&gt;View the source code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub Planet received a &lt;strong&gt;CSS Winner Star&lt;/strong&gt; on August 12, 2026, with an overall score of 7.5. That recognition encourages us to keep refining how the project connects development activity with a visual experience. &lt;a href="https://www.csswinner.com/details/github-planet/19334" rel="noopener noreferrer"&gt;See the award page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I lead the project and work on backend and deployment; Lena leads frontend and presentation.&lt;/p&gt;

&lt;p&gt;GitHub Planet is not affiliated with GitHub. If you try the demo, I’d love feedback—especially on how clearly the visual effects communicate each language and activity.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>github</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
