<?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: Zley</title>
    <description>The latest articles on DEV Community by Zley (@zley_34b5414ca5e486c1c333).</description>
    <link>https://dev.to/zley_34b5414ca5e486c1c333</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%2F3661506%2F9e1adfdf-23f8-4d9c-abf5-71ca925c82df.png</url>
      <title>DEV Community: Zley</title>
      <link>https://dev.to/zley_34b5414ca5e486c1c333</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zley_34b5414ca5e486c1c333"/>
    <language>en</language>
    <item>
      <title>How I Built My URL Decode Tool</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Fri, 13 Mar 2026 11:31:06 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/how-i-built-my-url-decode-tool-56on</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/how-i-built-my-url-decode-tool-56on</guid>
      <description>&lt;p&gt;I have been filling out Tools Online with the kind of developer utilities that are small, boring, and incredibly useful when you need them right now. A URL decode and encode tool was an obvious one to build. When you are debugging API calls, checking callback URLs, or trying to read a string full of &lt;code&gt;%E4%B8%AD%E6%96%87&lt;/code&gt;, you usually do not want to open DevTools and write one more line of JavaScript. You just want a page that works immediately and keeps your data in the browser.&lt;/p&gt;

&lt;p&gt;That was the whole goal here: make it fast, make it clear, and make it convenient enough that I would actually use it myself. If you want to see the finished version first, you can try it here: &lt;a href="http://toolsonline.run/urldecode" rel="noopener noreferrer"&gt;URL Decode tool&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2F0k0jl1ye1wrybp9n2gr3.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%2F0k0jl1ye1wrybp9n2gr3.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this tool does
&lt;/h2&gt;

&lt;p&gt;The tool handles both sides of the workflow.&lt;/p&gt;

&lt;p&gt;On the decode side, it takes percent-encoded content and turns it back into readable text with &lt;code&gt;decodeURIComponent&lt;/code&gt;, which is useful when I am checking query params, callback links, or encoded values from logs.&lt;/p&gt;

&lt;p&gt;On the encode side, I decided not to stop at a single output. The page shows both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;encodeURI&lt;/code&gt;, for full URLs where the URL structure should stay intact&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;encodeURIComponent&lt;/code&gt;, for parameter values where special characters should be fully escaped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters a lot in real use. People often know they need “URL encoding,” but the difference between those two JavaScript APIs is exactly where mistakes happen. So the tool does not just convert text. It also explains the difference and shows when each option makes sense.&lt;/p&gt;

&lt;p&gt;I also added the smaller quality-of-life pieces that make a tool like this feel complete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;real-time conversion while typing&lt;/li&gt;
&lt;li&gt;a switch for turning real-time mode on or off&lt;/li&gt;
&lt;li&gt;one-click copy and paste support&lt;/li&gt;
&lt;li&gt;local history for recent conversions&lt;/li&gt;
&lt;li&gt;clear error feedback for invalid encoded input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is flashy, but together it is much nicer than opening the console every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;My usual approach for tools like this is to build the smallest working loop first: input, processing, output. Once that works, I add the interaction details that actually affect usability.&lt;/p&gt;

&lt;p&gt;The main component is a client-side React component. The logic is straightforward, but I still wanted the state model to be clean. I split state across the input value, decode output, encode output, current mode, error message, copy feedback, real-time toggle, and history. For the encode flow, I keep both &lt;code&gt;uri&lt;/code&gt; and &lt;code&gt;uriComponent&lt;/code&gt; outputs so the user does not need to make that choice after the fact.&lt;/p&gt;

&lt;p&gt;History is stored in &lt;code&gt;localStorage&lt;/code&gt;, capped at 20 entries. I also made sure it does not get noisy. If the latest entry is effectively the same input in the same mode, it is ignored. In real-time mode, I do not immediately save every keystroke either. I delay history writes slightly so the tool feels like a practical utility instead of a key logger with a UI.&lt;/p&gt;

&lt;p&gt;On the page itself, I did not want a bare input box and a button. I wanted the landing page to be useful on its own, so I included content that explains the context around the tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;why URL encoding matters&lt;/li&gt;
&lt;li&gt;what RFC3986 allows and reserves&lt;/li&gt;
&lt;li&gt;common failure cases when text is not encoded properly&lt;/li&gt;
&lt;li&gt;the difference between &lt;code&gt;encodeURI&lt;/code&gt; and &lt;code&gt;encodeURIComponent&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;a quick reference table for common encoded characters&lt;/li&gt;
&lt;li&gt;FAQ, how-to content, and structured SEO metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the end result is not just a working widget. It is a tool page that helps people use the feature and understand the concept.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helped
&lt;/h2&gt;

&lt;p&gt;This was not a one-prompt, fully automated build. I used AI more like a fast development partner. It helped me move faster, but I still made the decisions that shaped the final result.&lt;/p&gt;

&lt;p&gt;The first place AI helped was requirement breakdown. I used it to quickly explore which interactions were worth including beyond basic encode and decode. Real-time conversion, clipboard actions, history, and dual encode outputs all came out of that early exploration phase.&lt;/p&gt;

&lt;p&gt;Then I used AI to help draft an initial component structure. That is where it saves the most time for me: getting a first pass on state layout, processing flow, and UI structure so I can start refining instead of staring at a blank file.&lt;/p&gt;

&lt;p&gt;After that, I tightened the implementation myself. Type details, state behavior, duplicate-history filtering, error handling, and the final interaction choices all needed manual judgment. This project also has real constraints around strict TypeScript, Radix UI usage, i18n file organization, and SEO page structure, so I treat AI output as a draft, not a final answer.&lt;/p&gt;

&lt;p&gt;I also use AI later in the process for cleanup work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking whether the copy reads naturally&lt;/li&gt;
&lt;li&gt;filling in page content that users and search engines actually benefit from&lt;/li&gt;
&lt;li&gt;catching obvious edge cases or missing explanations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the workflow I like most. AI handles the repetitive and exploratory parts. I keep control over the parts that determine quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The parts I like most in this tool
&lt;/h2&gt;

&lt;p&gt;The first one is privacy. Everything runs in the browser. Nothing needs to be sent to a server. For a developer tool that often touches callback URLs, temporary tokens, or debugging data, that boundary matters.&lt;/p&gt;

&lt;p&gt;The second one is that the page explains things instead of only outputting a result. I do not like tools that give you an answer without helping you understand why it works. So I added the &lt;code&gt;encodeURI&lt;/code&gt; vs &lt;code&gt;encodeURIComponent&lt;/code&gt; comparison, an encoding reference, and enough surrounding context to make the page useful even before someone clicks copy.&lt;/p&gt;

&lt;p&gt;The third one is the multilingual and SEO work around it. The site supports 15 languages, so even a “small” utility ends up needing full component copy, landing-page content, FAQ, metadata, alternates, and JSON-LD. It is a lot of detail work, but it is worth it because a useful tool should be discoverable and understandable, not just functional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;This tool is especially handy if you regularly do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debug API parameters&lt;/li&gt;
&lt;li&gt;inspect OAuth or payment callback URLs&lt;/li&gt;
&lt;li&gt;deal with spaces, non-ASCII text, or special characters in query strings&lt;/li&gt;
&lt;li&gt;generate safe parameter values for URLs&lt;/li&gt;
&lt;li&gt;quickly decide whether a full URL or a single value should be encoded&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is the kind of page that saves time when you need a quick answer and do not want to drop into code just to inspect one string.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final note
&lt;/h2&gt;

&lt;p&gt;I do not think developer tools need to be complicated to be valuable. A lot of the time, the best ones are the pages you remember at exactly the moment you need them.&lt;/p&gt;

&lt;p&gt;That is what I wanted this URL Decode and Encode tool to be. Not flashy, not overloaded, just fast, clear, and complete enough to be genuinely useful. AI helped me speed up parts of the build, which let me spend more time on the interaction details, page content, and overall polish.&lt;/p&gt;

&lt;p&gt;If you spend any amount of time bouncing between encoded strings and readable URLs, this one should fit nicely into your workflow. If you want to open it right away, you can &lt;a href="http://toolsonline.run/urldecode" rel="noopener noreferrer"&gt;try it here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>Built a tool to generate beautiful Prompt Cards over the weekend, no login required</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Sat, 20 Dec 2025 05:35:36 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/built-a-tool-to-generate-beautiful-prompt-cards-over-the-weekend-no-login-required-4ope</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/built-a-tool-to-generate-beautiful-prompt-cards-over-the-weekend-no-login-required-4ope</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I spent the weekend building a small tool. The idea came from my own frustration: whenever I shared AI Prompts in tech groups or on social media, copy-pasting raw text looked messy, and screenshots of ChatGPT interface were cluttered with UI elements.&lt;/p&gt;

&lt;p&gt;I wanted a simple, pure tool to turn boring text into beautiful cards, so I built &lt;strong&gt;AI Prompt Card&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;strong&gt;&lt;a href="https://aipromptcard.app" rel="noopener noreferrer"&gt;https://aipromptcard.app&lt;/a&gt;&lt;/strong&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.amazonaws.com%2Fuploads%2Farticles%2F4yycper9airdk0fu3gdf.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%2F4yycper9airdk0fu3gdf.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does it do?&lt;/strong&gt;&lt;br&gt;
Simply put, it "beautifies your prompts". Paste your prompt, and it automatically parses Markdown (with code highlighting) to generate a well-designed image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;WYSIWYG&lt;/strong&gt;: Edit on the left, preview on the right. No guessing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Markdown Support&lt;/strong&gt;: Optimized for code blocks and lists. Developer friendly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Aesthetics&lt;/strong&gt;: 10+ carefully crafted themes, supporting Dark/Light modes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy First&lt;/strong&gt;: &lt;strong&gt;No backend account system&lt;/strong&gt;. All history is saved in your browser's LocalStorage. I don't want your data.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ultra Lightweight&lt;/strong&gt;: No bloat. Open, generate, and go.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A bit about the dev process:&lt;/strong&gt;&lt;br&gt;
There are similar tools out there, but they often require login, produce low-res images, or have poor typography support. As someone with a bit of "pixel OCD", I tweaked the letter spacing and line height specifically to ensure the cards look great when shared on Twitter or mobile.&lt;/p&gt;

&lt;p&gt;The project has no paid features and is purely a labor of love (I even paid for the domain 😂).&lt;/p&gt;

&lt;p&gt;Let me know what you think! If you have any color themes you'd like to see, tell me in the comments and I'll add them!&lt;/p&gt;

</description>
      <category>promptengineering</category>
    </item>
  </channel>
</rss>
