<?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>Forem: 刘泽宇</title>
    <description>The latest articles on Forem by 刘泽宇 (@_8cf38bbd4754d55996b08).</description>
    <link>https://forem.com/_8cf38bbd4754d55996b08</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3723198%2Fc675da7c-94c1-4e8f-a301-4a0ded0d5685.png</url>
      <title>Forem: 刘泽宇</title>
      <link>https://forem.com/_8cf38bbd4754d55996b08</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/_8cf38bbd4754d55996b08"/>
    <language>en</language>
    <item>
      <title>Building an Interactive Hex Grid with Tailwind &amp; Vanilla JS (No Frameworks Required) 🐝</title>
      <dc:creator>刘泽宇</dc:creator>
      <pubDate>Sat, 24 Jan 2026 12:29:58 +0000</pubDate>
      <link>https://forem.com/_8cf38bbd4754d55996b08/building-an-interactive-hex-grid-with-tailwind-vanilla-js-no-frameworks-required-1g6d</link>
      <guid>https://forem.com/_8cf38bbd4754d55996b08/building-an-interactive-hex-grid-with-tailwind-vanilla-js-no-frameworks-required-1g6d</guid>
      <description>&lt;p&gt;👋 Hey Devs!&lt;br&gt;
Last week, I introduced my side project, Blue Hive Guide, a resource site for the game Bee Swarm Simulator.&lt;br&gt;
Today, I want to share how I built the core feature of the site: The Interactive Hive Composition Grid, using zero frameworks—just HTML, Tailwind CSS, and a sprinkle of Vanilla JS.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Challenge: Hexagons are Hard 🛑
The game uses a honeycomb layout. I needed a way to display 50 bees in a hexagonal grid that:
Looked like the game.
Was responsive (mobile-friendly).
Was clickable (to show meta stats).&lt;/li&gt;
&lt;li&gt;The Solution: CSS Grid + Clip-Path 🎨
Instead of using complex SVGs or heavy libraries, I used CSS clip-path to shape standard divs into hexagons.
The HTML Structure:
I treated the hive as a simple grid.
HTML
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="hive-grid grid-cols-7 gap-2"&amp;gt;
  &amp;lt;!-- A single bee slot --&amp;gt;
  &amp;lt;div class="hive-slot slot-blue" 
       data-name="Buoyant Bee"
       data-mutation="Convert Rate %"&amp;gt;
       Buoy
  &amp;lt;/div&amp;gt;
  &amp;lt;!-- ... 49 more slots --&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;CSS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.hive-slot {
  aspect-ratio: 1;
  /* The Hexagon Shape */
  clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.2s;
}

.hive-slot:hover {
  transform: scale(1.1); /* Nice hover effect */
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.bluehiveguide.com/blue-hive-composition-guide.html" rel="noopener noreferrer"&gt;👉 See it in action here:&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Handling Data without a Database 💾
Since this is a static site (deployed for speed), I didn't want a backend just to store bee stats.
I used HTML5 data- attributes to store the metadata directly in the DOM. When a user clicks a bee, a simple JS function reads these attributes and populates a Modal.
JavaScript
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function openBeeDetail(element) {
    // 1. Get data from the clicked HTML element
    const name = element.getAttribute('data-name');
    const mutation = element.getAttribute('data-mutation');

    // 2. Inject into the Modal
    document.getElementById('modalName').innerText = name;
    document.getElementById('modalMutation').innerText = mutation;

    // 3. Show Modal
    document.getElementById('beeModal').classList.remove('hidden');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's simple, blazing fast, and requires zero API calls.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Improving UX: The "Copy-Paste" Tool 🛠️
Another pain point for players is setting up their "Natro Macro" (automation software). It requires specific JSON settings.
On my Macro Settings Page, I added a code block with a one-click copy button. It’s a small detail, but it saves users from typing errors.&lt;/li&gt;
&lt;li&gt;Current Progress &amp;amp; SEO 📈
Since launching, I've expanded the site structure to cover all bases:
&lt;a href="https://www.bluehiveguide.com/ssa-amulet-stats-blue.html" rel="noopener noreferrer"&gt;SSA Stats: A guide on amulet probability.&lt;/a&gt;
&lt;a href="https://www.bluehiveguide.com/mixed-to-blue-hive-transition.html" rel="noopener noreferrer"&gt;Transition Guide: For early-game players.&lt;/a&gt;
Google Search Console is showing steady growth (300+ daily impressions), proving that niche static sites are still very viable in 2026.
🙏 Feedback Request
I'm currently optimizing the Mobile View of the Hex Grid. If you check it on your phone, does the spacing feel too tight?
&lt;a href="https://www.bluehiveguide.com" rel="noopener noreferrer"&gt;Check it out&lt;/a&gt;
Thanks for following my journey!&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>ui</category>
      <category>frontend</category>
    </item>
    <item>
      <title>I built a niche gaming tool in 3 days: My journey building an interactive Blue Hive Guide 🐝</title>
      <dc:creator>刘泽宇</dc:creator>
      <pubDate>Wed, 21 Jan 2026 08:15:42 +0000</pubDate>
      <link>https://forem.com/_8cf38bbd4754d55996b08/i-built-a-niche-gaming-tool-in-3-days-my-journey-building-an-interactive-blue-hive-guide-koo</link>
      <guid>https://forem.com/_8cf38bbd4754d55996b08/i-built-a-niche-gaming-tool-in-3-days-my-journey-building-an-interactive-blue-hive-guide-koo</guid>
      <description>&lt;p&gt;👋 Hi DEV Community!&lt;br&gt;
I'm a solo developer and recently, I've been obsessing over a Roblox game called Bee Swarm Simulator (I know, I know, but the mechanics are surprisingly deep!).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Problem 🛑
While playing, I reached the "endgame" phase where everyone switches to a specific build called the "Blue Hive".
The problem? The information was scattered everywhere:
20-minute YouTube videos just to show one image.
Discord messages that get lost.
Messy Reddit threads from 2 years ago.
There was no clean, interactive, web-based guide that told you exactly which bee to put where and what stats (mutations) they needed.&lt;/li&gt;
&lt;li&gt;The Solution 🛠️
So, I decided to build it myself. I wanted to create a site that acts as a "second monitor" tool for players while they macro (AFK farm).
My goal was simple:
Zero bloat (Load instantly).
Visual-first (The Hive Composition).
Interactive (Click a bee -&amp;gt; see the meta stats).
The Tech Stack:
I kept it super simple because I wanted to ship fast:
HTML5 (Semantic structure for SEO).
Tailwind CSS (For that clean, gamified UI style).
Vanilla JavaScript (For the interactive modals).&lt;/li&gt;
&lt;li&gt;Key Feature: The Interactive Hive Grid 🧩
The core of the site is the 50-bee slot layout.
I used CSS Grid to create the honeycomb shape and added a data- attribute system to store the metadata (Mutations, Beequips, Roles) for each bee.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Example of how I handled the data --&amp;gt;
&amp;lt;div class="hive-slot slot-blue" 
     onclick="openBeeDetail(this)"
     data-name="Buoyant Bee"
     data-mutation="Convert Rate %"&amp;gt;
     Buoy
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a user clicks a slot, a modal pops up with the exact 2026 meta build info. No more pausing videos!&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.amazonaws.com%2Fuploads%2Farticles%2Ffheqe0wxmmalniql51y7.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.amazonaws.com%2Fuploads%2Farticles%2Ffheqe0wxmmalniql51y7.png" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Early Results 📈
I launched the site Blue Hive Guide just 3 days ago.
Without any paid ads, just by optimizing for SEO keywords like "Blue Hive Build 2026", the site is already seeing:
300+ Impressions daily on GSC.
13% CTR (It seems players were really hungry for this!).&lt;/li&gt;
&lt;li&gt;What's Next? 🚀
I'm currently working on adding a Macro Settings Generator and expanding the guide for Red/White hives.
I'd love to hear your feedback!
How does the UI feel? (I tried to match the game's aesthetic).
Any tips for optimizing vanilla JS modals?
Thanks for reading my little journey!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.bluehiveguide.com" rel="noopener noreferrer"&gt;Live demo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>sideprojects</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
