<?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: Full-Moon</title>
    <description>The latest articles on DEV Community by Full-Moon (@fullmoon_a4b52e10aed483d).</description>
    <link>https://dev.to/fullmoon_a4b52e10aed483d</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%2F3567823%2Fece50114-df5a-4b87-8034-8ef97e1ae246.png</url>
      <title>DEV Community: Full-Moon</title>
      <link>https://dev.to/fullmoon_a4b52e10aed483d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fullmoon_a4b52e10aed483d"/>
    <language>en</language>
    <item>
      <title>Built UtilCraft: 15+ Free Web Tools in One Place</title>
      <dc:creator>Full-Moon</dc:creator>
      <pubDate>Thu, 16 Oct 2025 00:41:39 +0000</pubDate>
      <link>https://dev.to/fullmoon_a4b52e10aed483d/built-utilcraft-15-free-web-tools-in-one-place-24ik</link>
      <guid>https://dev.to/fullmoon_a4b52e10aed483d/built-utilcraft-15-free-web-tools-in-one-place-24ik</guid>
      <description>&lt;h2&gt;
  
  
  🤔 The Problem
&lt;/h2&gt;

&lt;p&gt;You need to format JSON. What do you do?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Google "JSON formatter"&lt;/li&gt;
&lt;li&gt;Click random site&lt;/li&gt;
&lt;li&gt;Deal with ads and slow loading&lt;/li&gt;
&lt;li&gt;Use tool&lt;/li&gt;
&lt;li&gt;Need something else? Start over...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;There had to be a better way.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 The Solution
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://utilcraft.com" rel="noopener noreferrer"&gt;&lt;strong&gt;UtilCraft&lt;/strong&gt;&lt;/a&gt; - all your everyday tools in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What's Inside
&lt;/h2&gt;

&lt;h3&gt;
  
  
  15+ Essential Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🖼️ &lt;strong&gt;Image Resizer&lt;/strong&gt; - Batch process, instant results&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;JSON Formatter&lt;/strong&gt; - Validate, format, minify&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;Password Generator&lt;/strong&gt; - Cryptographically secure&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Color Converter&lt;/strong&gt; - HEX ↔ RGB ↔ HSL ↔ CMYK&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;QR Generator&lt;/strong&gt; - URL, WiFi, vCard&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Base64 Encoder&lt;/strong&gt; - Text &amp;amp; files&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;URL Encoder&lt;/strong&gt; - Safe URL formatting&lt;/li&gt;
&lt;li&gt;🆔 &lt;strong&gt;UUID Generator&lt;/strong&gt; - Bulk generation&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Word Counter&lt;/strong&gt; - Real-time stats&lt;/li&gt;
&lt;li&gt;🧮 &lt;strong&gt;Calculator&lt;/strong&gt; - Scientific mode&lt;/li&gt;
&lt;li&gt;📏 &lt;strong&gt;Unit Converter&lt;/strong&gt; - Length, weight, temp&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Markdown Editor&lt;/strong&gt; - Live preview&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5+ Mini Games
&lt;/h3&gt;

&lt;p&gt;Quick mental breaks without leaving the site:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2048, Snake, Tetris, Memory Match, Tic-Tac-Toe&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Why It's Different
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Privacy First
&lt;/h3&gt;

&lt;p&gt;Everything runs &lt;strong&gt;in your browser&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Images never leave your device&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;canvas&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// Process locally, no upload!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Your files = Your device only.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Actually Fast
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No ads slowing you down&lt;/li&gt;
&lt;li&gt;Instant processing&lt;/li&gt;
&lt;li&gt;Works offline (PWA ready)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Works Everywhere
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📱 Mobile optimized&lt;/li&gt;
&lt;li&gt;🌏 7 languages (ko/en/ja/es/zh/pt/fr)&lt;/li&gt;
&lt;li&gt;🌙 Dark mode included&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;p&gt;Built with modern tools for maximum performance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Next&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nc"&gt;TypeScript &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;safety&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Tailwind&lt;/span&gt; &lt;span class="nc"&gt;CSS &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;styling&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Radix&lt;/span&gt; &lt;span class="nc"&gt;UI &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;components&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;Self&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;hosted&lt;/span&gt; &lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;Oracle&lt;/span&gt; &lt;span class="nx"&gt;Cloud&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Next.js 14?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Performance wins:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server Components for static content&lt;/li&gt;
&lt;li&gt;Client Components for interactive tools&lt;/li&gt;
&lt;li&gt;Code splitting per route&lt;/li&gt;
&lt;li&gt;&amp;lt;50KB initial bundle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Lightning fast, even on slow connections.&lt;/p&gt;

&lt;h2&gt;
  
  
  📈 Some Cool Technical Bits
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dynamic Loading
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Only load what you need&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ImageResize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dynamic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/components/tools/image-resize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Spinner&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Multi-Language Support
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Easy internationalization&lt;/span&gt;
&lt;span class="nx"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;translations&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;ko&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;  &lt;span class="c1"&gt;// Korean&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;en&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;  &lt;span class="c1"&gt;// English&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;ja&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;  &lt;span class="c1"&gt;// Japanese&lt;/span&gt;
&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;    &lt;span class="c1"&gt;// and more&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Client-Side Processing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Password generation (secure!)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generatePassword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Uint8Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;crypto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getRandomValues&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Browser crypto API&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;convertToPassword&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💪 Challenges &amp;amp; Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Challenge 1: Performance
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Tools loading slowly&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Code splitting + dynamic imports&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Each tool loads independently&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 2: Mobile UX
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Complex tools on small screens&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Mobile-first design from day 1&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Works great on phones&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 3: Offline Usage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Need internet for every tool&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; PWA + client-side processing&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt; Works without connection&lt;/p&gt;

&lt;h2&gt;
  
  
  🎓 What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Next.js 14 is production-ready&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App Router is stable&lt;/li&gt;
&lt;li&gt;Server/Client split is powerful&lt;/li&gt;
&lt;li&gt;File-based routing scales well&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance matters more than features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast &amp;gt; Feature-rich&lt;/li&gt;
&lt;li&gt;1s load time = Happy users&lt;/li&gt;
&lt;li&gt;Bundle size affects everything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Privacy is a feature&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users appreciate no uploads&lt;/li&gt;
&lt;li&gt;Client-side = zero server costs&lt;/li&gt;
&lt;li&gt;Simpler infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 What's Next
&lt;/h2&gt;

&lt;p&gt;Continuously improving based on user feedback. Have ideas for new tools or features? Let me know!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎁 Try It Yourself
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live site:&lt;/strong&gt; &lt;a href="https://utilcraft.com" rel="noopener noreferrer"&gt;utilcraft.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's completely free, no signup required.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Your Feedback
&lt;/h2&gt;

&lt;p&gt;What would make this more useful for you?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing a tool you use often?&lt;/li&gt;
&lt;li&gt;Found a bug?&lt;/li&gt;
&lt;li&gt;Feature suggestion?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment! I'm actively developing this and would love your input.&lt;/p&gt;




&lt;p&gt;Built with ❤️ by a solo developer who got tired of switching between websites.&lt;/p&gt;

&lt;p&gt;#webdev #nextjs #typescript #sideproject&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
