<?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: ruoyexi pan</title>
    <description>The latest articles on DEV Community by ruoyexi pan (@ruoyexi_pan_9ef6adab51ba8).</description>
    <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8</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%2F3924520%2F43cea002-812b-4a0e-b35d-a005491696f5.jpg</url>
      <title>DEV Community: ruoyexi pan</title>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ruoyexi_pan_9ef6adab51ba8"/>
    <language>en</language>
    <item>
      <title>Why We Love "Stupid" Games as Adults</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Thu, 28 May 2026 02:44:39 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/why-we-love-stupid-games-as-adults-2oa7</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/why-we-love-stupid-games-as-adults-2oa7</guid>
      <description>&lt;p&gt;Why We Love "Stupid" Games as Adults: A Psychological Deep Dive&lt;br&gt;
By: A Developer Who Should Know Better&lt;/p&gt;




&lt;p&gt;The Question&lt;br&gt;
Why do adults love playing "stupid" browser games?&lt;br&gt;
I'm not talking about complex strategy games or immersive RPGs. I'm talking about games where you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tap to make a bird fly&lt;/li&gt;
&lt;li&gt;Slide numbers to make them bigger&lt;/li&gt;
&lt;li&gt;Match colors to make them disappear
These games are objectively simple. Yet millions of adults play them daily.
Why?
I spent a month researching this question. Here's what I found.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Part 1: Time Fragmentation&lt;br&gt;
The Adult Time Budget&lt;br&gt;
I tracked my time for a week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work: 50 hours&lt;/li&gt;
&lt;li&gt;Commute: 10 hours&lt;/li&gt;
&lt;li&gt;Sleep: 50 hours&lt;/li&gt;
&lt;li&gt;Eating: 10 hours&lt;/li&gt;
&lt;li&gt;Chores: 10 hours&lt;/li&gt;
&lt;li&gt;Socializing: 5 hours&lt;/li&gt;
&lt;li&gt;Phone scrolling: 10 hours&lt;/li&gt;
&lt;li&gt;Free time: 3 hours
Note: That 3 hours of "free time" is split into countless 5-minute and 10-minute fragments.
You can't play Elden Ring in 5 minutes. But you can play a browser game.
This is the reality of time fragmentation.
The Time Cost of Gaming
Traditional games have a problem: high time cost.
Opening Steam, selecting a game, waiting for it to load, entering the game, going through the tutorial...
This process takes at least 5 minutes.
Browser games? Open the page, 3-second load, start playing.
Time cost: 3 seconds vs 5 minutes
For time-fragmented adults, this difference is critical.
The Design Philosophy of "Stupid" Games
The design philosophy of "stupid" games is actually quite sophisticated:&lt;/li&gt;
&lt;li&gt;Zero Learning Curve&lt;/li&gt;
&lt;li&gt;No tutorial needed&lt;/li&gt;
&lt;li&gt;No manual to read&lt;/li&gt;
&lt;li&gt;Just start playing&lt;/li&gt;
&lt;li&gt;Instant Feedback&lt;/li&gt;
&lt;li&gt;Actions have immediate results&lt;/li&gt;
&lt;li&gt;Achievements come quickly&lt;/li&gt;
&lt;li&gt;Failure cost is low&lt;/li&gt;
&lt;li&gt;Interruptible Anytime&lt;/li&gt;
&lt;li&gt;Boss arrives? Close the tab&lt;/li&gt;
&lt;li&gt;No progress lost&lt;/li&gt;
&lt;li&gt;No teammates affected
These three points perfectly match the time characteristics of adults.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Part 2: Psychological Needs&lt;br&gt;
2.1 The Substitute for Achievement&lt;br&gt;
Psychologist Abraham Maslow proposed the "Hierarchy of Needs," which includes "esteem needs" — the need for achievement and recognition.&lt;br&gt;
At work, achievement often takes months. You might spend 3 months on a project before getting recognition from your boss.&lt;br&gt;
But in small games, achievement comes fast. 30 seconds per round, and winning gives you a sense of accomplishment.&lt;br&gt;
This is "instant gratification" — brief but effective.&lt;br&gt;
2.2 The Return of Control&lt;br&gt;
Adult life is full of "uncontrollable" elements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work progress is uncontrollable&lt;/li&gt;
&lt;li&gt;Boss decisions are uncontrollable&lt;/li&gt;
&lt;li&gt;Housing prices are uncontrollable&lt;/li&gt;
&lt;li&gt;Children's grades are uncontrollable
But in small games, everything is under control:&lt;/li&gt;
&lt;li&gt;Your actions determine the outcome&lt;/li&gt;
&lt;li&gt;Failure can be undone&lt;/li&gt;
&lt;li&gt;Rules are simple and clear
This "sense of control" is something adults rarely get in real life.
2.3 The Safe House for Escapism
Psychology has a concept called "Psychological Escapism."
It refers to people using certain activities to temporarily escape the pressures of real life.
Small games are a "safe" form of escapism:&lt;/li&gt;
&lt;li&gt;No need to invest too much time&lt;/li&gt;
&lt;li&gt;No need to invest too much money&lt;/li&gt;
&lt;li&gt;No guilt involved
Compared to taking a vacation, playing 10 minutes of a small game is a more "economical" way to escape.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Part 3: Social Currency&lt;br&gt;
3.1 "Have You Played This?"&lt;br&gt;
I noticed an interesting phenomenon:&lt;br&gt;
Many people play small games not for the game itself, but for social currency.&lt;br&gt;
Social currency is the topic you can bring up in conversation.&lt;br&gt;
"Have you played Flappy Bird?"&lt;br&gt;
"Have you played 2048?"&lt;br&gt;
These small games, because of their widespread popularity, become social topics.&lt;br&gt;
If you've played them, you can join the discussion. If you haven't, you can't.&lt;br&gt;
3.2 The Comparison Instinct&lt;br&gt;
Small games also have a hidden driver: the comparison instinct.&lt;br&gt;
Many small games have leaderboards where you can see friends' scores.&lt;br&gt;
"They scored higher than me? No way, I have to play again."&lt;br&gt;
This comparison instinct makes people play the same game repeatedly.&lt;br&gt;
3.3 The Desire to Share&lt;br&gt;
When you achieve a high score, you want to share it with friends.&lt;br&gt;
"Look, I scored 1000 points!"&lt;br&gt;
This desire to share is also a driver for small games.&lt;/p&gt;




&lt;p&gt;Part 4: Why Browser Games Beat App Games&lt;br&gt;
4.1 Instant Play, No Download&lt;br&gt;
This is the biggest advantage of browser games.&lt;br&gt;
App games require download, installation, and registration — a process that discourages many people.&lt;br&gt;
Browser games? Click the link, 3 seconds to start playing.&lt;br&gt;
The conversion rate difference is enormous.&lt;br&gt;
I know a friend who makes small games. He did an experiment:&lt;br&gt;
The same game, made as an app and as a web version — the web version had 10 times the user count.&lt;br&gt;
The reason is simple: The web version has no download barrier.&lt;br&gt;
4.2 Cross-Platform, No Boundaries&lt;br&gt;
Browser games can be played on any device:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phone&lt;/li&gt;
&lt;li&gt;Computer&lt;/li&gt;
&lt;li&gt;Tablet&lt;/li&gt;
&lt;li&gt;Even smart TVs
App games? iOS and Android require separate development, plus adaptation for different devices.
Browser games: one codebase, all platforms.
4.3 Easy Updates, No Approval Needed
App updates require store approval, sometimes taking days.
Browser game updates? Just replace the server files, and users see the new version after refreshing.
This is crucial for small games that need rapid iteration.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Conclusion&lt;br&gt;
After a month of research, I finally understand why adults love "stupid" games.&lt;br&gt;
It's not because we're stupid. It's because we're smart.&lt;br&gt;
We've figured out that fun doesn't need to be complex. We've learned to find joy in simplicity.&lt;br&gt;
And that's not stupid at all.&lt;/p&gt;




&lt;p&gt;The author is a developer who occasionally wonders about the meaning of life. If you also like to ponder, feel free to follow.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>gamedev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Hidden Cost of Developer Tools: Why I Built My Own Free Alternative</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Wed, 20 May 2026 12:26:46 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/the-hidden-cost-of-developer-tools-why-i-built-my-own-free-alternative-2lkf</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/the-hidden-cost-of-developer-tools-why-i-built-my-own-free-alternative-2lkf</guid>
      <description>&lt;p&gt;Every developer has a collection of bookmarks. JSON formatters, Base64 encoders, hash generators, regex testers - the list goes on. We visit these sites multiple times a day, copy-paste our data, get the result, and move on.&lt;br&gt;
But have you ever stopped to think about what's actually happening behind the scenes?&lt;br&gt;
The Problem with Most Developer Tools&lt;br&gt;
Last month, I was debugging an API response. I needed to format some JSON quickly. I opened a popular online formatter, pasted my data, and... was greeted with a full-screen ad. After closing it, I found the tool. But wait - there was another popup asking me to sign up for "premium features."&lt;br&gt;
This pattern repeats across dozens of developer tool websites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intrusive ads that slow down your workflow&lt;/li&gt;
&lt;li&gt;Signup walls for basic functionality&lt;/li&gt;
&lt;li&gt;Tracking scripts that follow you around the web&lt;/li&gt;
&lt;li&gt;Inconsistent UIs that make you relearn the interface each time
The Real Cost
Let's do some quick math. If you use 5 different tool websites daily, and each one wastes 30 seconds on ads and navigation, that's:&lt;/li&gt;
&lt;li&gt;2.5 minutes per day&lt;/li&gt;
&lt;li&gt;12.5 minutes per week&lt;/li&gt;
&lt;li&gt;~10 hours per year
That's more than a full workday lost to tool-switching overhead.
Why I Built My Own
I decided to build a single platform with all the tools I use regularly. The requirements were simple:&lt;/li&gt;
&lt;li&gt;No ads&lt;/li&gt;
&lt;li&gt;No signup&lt;/li&gt;
&lt;li&gt;No tracking&lt;/li&gt;
&lt;li&gt;Consistent interface&lt;/li&gt;
&lt;li&gt;Fast loading
The result was a collection of 90+ developer tools, all running client-side in the browser.
Technical Decisions
Vue.js 3 + TypeScript: I chose Vue because of its reactivity system and TypeScript support. The Composition API makes it easy to organize tool logic.
Vite Build Tool: Fast hot module replacement during development, optimized production builds.
Cloudflare Pages: Free hosting with global CDN. The site loads in under 1 second worldwide.
Client-side Processing: All tools run in the browser. No data is sent to any server. This was non-negotiable for privacy.
The SEO Challenge
Building the tools was the easy part. Making them discoverable was harder.
Developer tool sites face a unique SEO challenge: each tool is essentially a separate product with its own search intent. "JSON formatter" and "hash generator" are completely different queries, but they're on the same website.
Solution: Each tool gets its own page with:&lt;/li&gt;
&lt;li&gt;Unique title and meta description&lt;/li&gt;
&lt;li&gt;Dedicated H1 heading&lt;/li&gt;
&lt;li&gt;Tool-specific structured data (JSON-LD)&lt;/li&gt;
&lt;li&gt;Internal links to related tools
Results After 3 Months&lt;/li&gt;
&lt;li&gt;93 tool pages indexed by Google&lt;/li&gt;
&lt;li&gt;500+ daily organic visitors&lt;/li&gt;
&lt;li&gt;Top 10 rankings for long-tail keywords&lt;/li&gt;
&lt;li&gt;Zero ad revenue (intentional)
Lessons Learned&lt;/li&gt;
&lt;li&gt;Free tools attract users, but content keeps them - Tools alone don't build loyalty. Tutorials and guides do.&lt;/li&gt;
&lt;li&gt;SEO for tool sites is different - Each tool needs its own SEO strategy, not just the homepage.&lt;/li&gt;
&lt;li&gt;Performance matters more than features - A fast, simple tool beats a slow, feature-rich one every time.&lt;/li&gt;
&lt;li&gt;Open source builds trust - Making the code available on GitHub builds credibility.
Try It Yourself
The tools are available at agentsaitools.com. No signup, no ads, no tracking. Just tools that work.
What developer tools do you use daily? I'd love to hear about your workflow in the comments.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>How I Built a Developer Tools Website and What I Learned About Modern Web Development</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Tue, 19 May 2026 01:56:46 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-built-a-developer-tools-website-and-what-i-learned-about-modern-web-development-2lfc</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-built-a-developer-tools-website-and-what-i-learned-about-modern-web-development-2lfc</guid>
      <description>&lt;p&gt;I recently launched a developer tools website called AgentsAITools. It's a collection of 90+ free online tools for developers - JSON formatter, Base64 encoder, hash generator, JWT decoder, and more.&lt;/p&gt;

&lt;p&gt;This isn't a "how I made millions" post. It's about the technical decisions, mistakes, and lessons from building a real product.&lt;br&gt;
Why I Built It&lt;br&gt;
I was tired of bookmarking 15 different websites for basic developer tasks. Every time I needed to format JSON or encode Base64, I'd open a different site with different UIs, different ads, and different levels of quality.&lt;/p&gt;

&lt;p&gt;So I decided to build my own.&lt;br&gt;
The Tech Stack&lt;br&gt;
Frontend: Vue.js 3 with TypeScript&lt;br&gt;
Build Tool: Vite&lt;br&gt;
Hosting: Cloudflare Pages (free)&lt;br&gt;
CDN: Cloudflare&lt;br&gt;
Domain: $12/year&lt;br&gt;
Total cost: $12/year. That's it.&lt;br&gt;
The SPA Problem&lt;br&gt;
The biggest issue I ran into was SEO. Vue.js creates a Single Page Application (SPA), which means all pages share the same HTML. When Google's crawler visits /json-formatter and /hash-text, it sees identical HTML.&lt;/p&gt;

&lt;p&gt;This is a disaster for SEO. Google thinks all your pages are the same content.&lt;/p&gt;

&lt;p&gt;Solution: SSG (Static Site Generation)&lt;/p&gt;

&lt;p&gt;I wrote a script that generates static HTML for each tool page. Now each page has:&lt;br&gt;
Unique &lt;/p&gt;
 tag&lt;br&gt;
Unique &lt;br&gt;
Unique &lt;br&gt;
Proper JSON-LD structured data&lt;br&gt;
function generateHtml(page) {&lt;br&gt;
  let html = indexHtml;

&lt;p&gt;// Replace title&lt;br&gt;
  html = html.replace(/&lt;/p&gt;


[^&amp;lt;]*&amp;lt;\/title&amp;gt;/, &lt;code&gt;&amp;lt;title&amp;gt;${page.title}&amp;lt;/title&amp;gt;&lt;/code&gt;);

&lt;p&gt;// Replace description&lt;br&gt;
  html = html.replace(&lt;br&gt;
    /&amp;lt;meta name="description" content="[^"]*"/,&lt;br&gt;
    &lt;code&gt;&amp;lt;meta name="description" content="${page.description}"&lt;/code&gt;&lt;br&gt;
  );&lt;/p&gt;

&lt;p&gt;// Replace canonical URL&lt;br&gt;
  html = html.replace(&lt;br&gt;
    /&amp;lt;link rel="canonical" href="[^"]*"/,&lt;br&gt;
    &lt;code&gt;&amp;lt;link rel="canonical" href="https://agentsaitools.com${page.path}/"&lt;/code&gt;&lt;br&gt;
  );&lt;/p&gt;

&lt;p&gt;return html;&lt;br&gt;
}&lt;br&gt;
The Canonical URL Trap&lt;br&gt;
Another issue: all pages had canonical URLs pointing to the homepage. This tells Google "these pages are duplicates of the homepage."&lt;/p&gt;

&lt;p&gt;Fix: Each page's canonical must point to itself:&lt;br&gt;
/json-formatter/ → canonical: &lt;a href="https://agentsaitools.com/json-formatter/" rel="noopener noreferrer"&gt;https://agentsaitools.com/json-formatter/&lt;/a&gt;&lt;br&gt;
/hash-text/ → canonical: &lt;a href="https://agentsaitools.com/hash-text/" rel="noopener noreferrer"&gt;https://agentsaitools.com/hash-text/&lt;/a&gt;&lt;br&gt;
Internal Linking&lt;br&gt;
Ahrefs audit showed many pages had no internal links (orphan pages).&lt;/p&gt;

&lt;p&gt;Solution: Add a "Related Tools" section and "All Tools" list to every page. Now each page links to 90+ other pages.&lt;br&gt;
Results After 3 Months&lt;br&gt;
Google indexed all 93 tool pages&lt;br&gt;
500+ daily visitors from organic search&lt;br&gt;
...（中间省略 3028 字）...&lt;br&gt;
Add to Build Process&lt;br&gt;
{&lt;br&gt;
  "scripts": {&lt;br&gt;
    "build": "vite build &amp;amp;&amp;amp; node scripts/ssg.mjs"&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
Key Lessons&lt;br&gt;
Canonical URLs must point to themselves - Not to the homepage&lt;br&gt;
Each page needs unique meta tags - Title, description, keywords&lt;br&gt;
Add structured data - JSON-LD helps search engines understand your content&lt;br&gt;
Test with Google's Rich Results Test - Verify your structured data&lt;br&gt;
Results&lt;br&gt;
After implementing SSG:&lt;br&gt;
All pages indexed by Google&lt;br&gt;
Unique titles in search results&lt;br&gt;
Proper canonical URLs&lt;br&gt;
Rich snippets in search results&lt;/p&gt;



&lt;br&gt;


</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>devops</category>
      <category>github</category>
    </item>
    <item>
      <title>How I Built a 90+ Tools Developer Platform with Vue 3 + SSG</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Wed, 13 May 2026 12:01:24 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-built-a-90-tools-developer-platform-with-vue-3-ssg-5def</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-built-a-90-tools-developer-platform-with-vue-3-ssg-5def</guid>
      <description>&lt;p&gt;I recently built a developer tools collection website. Ran into a lot of issues along the way, but also learned a ton. Here's my experience with the tech stack and implementation.&lt;br&gt;
Background&lt;br&gt;
I got tired of needing various online tools while coding - JSON formatter, Base64 converter, hash generator, etc. Had them all bookmarked in different places, couldn't find what I needed quickly.&lt;br&gt;
So I decided to build my own. One place with everything I need.&lt;br&gt;
Tech Stack&lt;br&gt;
Frontend: Vue 3 + TypeScript&lt;br&gt;
Why Vue 3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Composition API feels natural&lt;/li&gt;
&lt;li&gt;Great TypeScript support&lt;/li&gt;
&lt;li&gt;Mature ecosystem with good component libraries
// Tool definition example
export const tool = defineTool({
name: 'Hash Text',
path: '/hash-text',
description: 'Generate MD5, SHA256 hashes',
keywords: ['hash', 'md5', 'sha256'],
component: () =&amp;gt; import('./hash-text.vue'),
});&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build Tool: Vite&lt;br&gt;
Vite's dev experience is really good:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast hot reload&lt;/li&gt;
&lt;li&gt;Simple config&lt;/li&gt;
&lt;li&gt;Quick builds
Deployment: Cloudflare Pages
Why Cloudflare Pages:&lt;/li&gt;
&lt;li&gt;Free tier is enough&lt;/li&gt;
&lt;li&gt;Global CDN acceleration&lt;/li&gt;
&lt;li&gt;Automatic HTTPS&lt;/li&gt;
&lt;li&gt;Easy deployment
Issues I Encountered&lt;/li&gt;
&lt;li&gt;SPA SEO Problem
This was the biggest issue. Vue SPA returns the same HTML for all pages. Search engine crawlers see empty shells.
Solution: SSG pre-rendering
I wrote an SSG script that generates independent HTML for each tool page:
function generateHtml(page) {
let html = indexHtml;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;// Replace Title&lt;br&gt;
  html = html.replace(/&lt;/p&gt;
[^&amp;lt;]*&amp;lt;\/title&amp;gt;/, &lt;code&gt;&amp;lt;title&amp;gt;${page.title}&amp;lt;/title&amp;gt;&lt;/code&gt;);

&lt;p&gt;// Replace Meta Description&lt;br&gt;
  html = html.replace(/&amp;lt;meta name="description" content="[^"]*"/, &lt;br&gt;
    &lt;code&gt;&amp;lt;meta name="description" content="${page.description}"&lt;/code&gt;);&lt;/p&gt;

&lt;p&gt;// Replace Canonical URL&lt;br&gt;
  html = html.replace(/&amp;lt;link rel="canonical" href="[^"]*"/, &lt;br&gt;
    &lt;code&gt;&amp;lt;link rel="canonical" href="https://agentsaitools.com${page.path}/"&lt;/code&gt;);&lt;/p&gt;

&lt;p&gt;return html;&lt;br&gt;
}&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Canonical URL Issue
At first, all pages had canonical pointing to homepage, causing sub-pages to not be indexed.
Solution: Ensure each page's canonical points to its own URL.&lt;/li&gt;
&lt;li&gt;Internal Link Issue
Ahrefs audit found many pages had no internal links (orphan pages).
Solution: Add related tools recommendation and complete tool list on each page.
Architecture
src/
├── tools/           # Tool definitions
│   ├── hash-text/
│   │   ├── index.ts
│   │   └── hash-text.vue
│   └── ...
├── pages/           # Page components
├── layouts/         # Layout components
└── components/      # Shared components&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;scripts/&lt;br&gt;
└── ssg.mjs          # SSG pre-render script&lt;/p&gt;

&lt;p&gt;SEO Optimization&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Structured Data&lt;br&gt;
Each tool page has its own JSON-LD:&lt;br&gt;
{&lt;br&gt;
"&lt;a class="mentioned-user" href="https://dev.to/context"&gt;@context&lt;/a&gt;": "&lt;a href="https://schema.org" rel="noopener noreferrer"&gt;https://schema.org&lt;/a&gt;",&lt;br&gt;
"@type": "WebPage",&lt;br&gt;
"name": "Hash Generator",&lt;br&gt;
"description": "Generate MD5, SHA256 hashes online",&lt;br&gt;
"url": "&lt;a href="https://agentsaitools.com/hash-text/" rel="noopener noreferrer"&gt;https://agentsaitools.com/hash-text/&lt;/a&gt;"&lt;br&gt;
}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Breadcrumb Navigation&lt;br&gt;
{&lt;br&gt;
"@type": "BreadcrumbList",&lt;br&gt;
"itemListElement": [&lt;br&gt;
{"position": 1, "name": "Home"},&lt;br&gt;
{"position": 2, "name": "Crypto"},&lt;br&gt;
{"position": 3, "name": "Hash Generator"}&lt;br&gt;
]&lt;br&gt;
}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Meta Tags&lt;br&gt;
Each page has independent:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Title&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Description&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Canonical URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OG tags&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Twitter tags&lt;br&gt;
Performance Optimization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code splitting - Lazy loading by route&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CDN acceleration - Cloudflare global nodes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Asset compression - Terser for JS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Caching strategy - Long-term cache for static assets&lt;br&gt;
Cost&lt;br&gt;
Item&lt;br&gt;
Cost&lt;br&gt;
Domain&lt;br&gt;
$12/year&lt;br&gt;
Hosting&lt;br&gt;
Free&lt;br&gt;
CDN&lt;br&gt;
Free&lt;br&gt;
SSL&lt;br&gt;
Free&lt;br&gt;
Total&lt;br&gt;
$12/year&lt;br&gt;
Summary&lt;br&gt;
Learned a lot from this project:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SPA SEO issues need SSG solution&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Structured data is important for SEO&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Internal link structure affects indexing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance optimization is ongoing&lt;br&gt;
If you're working on a similar project, I hope these experiences help.&lt;br&gt;
Source code: &lt;a href="https://github.com/ruoyexipan/it-tools" rel="noopener noreferrer"&gt;https://github.com/ruoyexipan/it-tools&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How I turned an open-source tool site into my own product</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Tue, 12 May 2026 08:57:14 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-turned-an-open-source-tool-site-into-my-own-product-3a9l</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/how-i-turned-an-open-source-tool-site-into-my-own-product-3a9l</guid>
      <description>&lt;p&gt;I recently launched a developer tools site: agentsaitools.com&lt;br&gt;
Didn't build it from scratch - based on the open-source project it-tools. The original project is great, but I wanted my own brand plus some SEO optimizations, so I forked it and customized.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I changed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Branding
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Changed site name and logo&lt;/li&gt;
&lt;li&gt;Rewrote the About page
ator, JWT parser... it's all there.
No ads, no signup, no data tracking.
&lt;a href="https://agentsaitools.com" rel="noopener noreferrer"&gt;https://agentsaitools.com&lt;/a&gt;
#webdev #developer #tools&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I Built a Developer Tools Website Because I Was Tired of Bookmarking 20 Different Sites</title>
      <dc:creator>ruoyexi pan</dc:creator>
      <pubDate>Mon, 11 May 2026 08:39:07 +0000</pubDate>
      <link>https://dev.to/ruoyexi_pan_9ef6adab51ba8/i-built-a-developer-tools-website-because-i-was-tired-of-bookmarking-20-different-sites-ec4</link>
      <guid>https://dev.to/ruoyexi_pan_9ef6adab51ba8/i-built-a-developer-tools-website-because-i-was-tired-of-bookmarking-20-different-sites-ec4</guid>
      <description>&lt;p&gt;Every developer has that folder in their bookmarks. You know the one. JSON formatter here, Base64 converter there, regex tester somewhere else, hash generator in another tab.&lt;br&gt;
I got tired of it.&lt;br&gt;
So I built AgentsAITools - a single place with 86+ developer tools that actually work well together.&lt;br&gt;
The problem&lt;br&gt;
My typical workflow looked like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Need to format some JSON → open jsonformatter.org&lt;/li&gt;
&lt;li&gt;Need to encode something in Base64 → open base64decode.org&lt;/li&gt;
&lt;li&gt;Need to test a regex → open regex101.com&lt;/li&gt;
&lt;li&gt;Need to generate a hash → search "md5 hash generator"&lt;/li&gt;
&lt;li&gt;Need to check a JWT → open jwt.io
Five different sites. Five different interfaces. Five different sets of ads and popups.
What I built
A single-page app with everything in one place. The tools are organized by category:&lt;/li&gt;
&lt;li&gt;Crypto &amp;amp; Security (hash, encrypt, generate)&lt;/li&gt;
&lt;li&gt;Converters (JSON, YAML, Base64, colors)&lt;/li&gt;
&lt;li&gt;Web (URL encoding, HTML entities, meta tags)&lt;/li&gt;
&lt;li&gt;Text (lorem ipsum, diff, case conversion)&lt;/li&gt;
&lt;li&gt;Network (IP calculators, MAC lookup)
Tech decisions
I went with Vue.js 3 + TypeScript because I wanted something reactive and type-safe. Vite for the build tool because it's fast. Cloudflare Pages for hosting because it's free and the CDN is solid.
No backend. Everything runs client-side. Your data never leaves your browser.
What I learned&lt;/li&gt;
&lt;li&gt;Simple tools have surprisingly complex edge cases. JSON formatting sounds easy until you deal with deeply nested objects, circular references, or different encoding standards.&lt;/li&gt;
&lt;li&gt;SEO for tool sites is different. Each tool needs its own landing page with proper meta tags. Google treats each tool as a separate query intent.&lt;/li&gt;
&lt;li&gt;Free hosting is good enough. Cloudflare Pages handles everything. No need for a VPS for a static site.
Try it
&lt;a href="https://agentsaitools.com" rel="noopener noreferrer"&gt;https://agentsaitools.com&lt;/a&gt;
Feedback welcome. Always looking for new tool ideas or ways to improve existing ones.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
