<?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: roynick365</title>
    <description>The latest articles on Forem by roynick365 (@roynick365).</description>
    <link>https://forem.com/roynick365</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%2F3891137%2Fe7f9242a-9d41-481d-b135-cbd7dac95906.png</url>
      <title>Forem: roynick365</title>
      <link>https://forem.com/roynick365</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/roynick365"/>
    <language>en</language>
    <item>
      <title>Three Small Things I Added to Fix My UI That Made It Actually Useful in Real Work</title>
      <dc:creator>roynick365</dc:creator>
      <pubDate>Sun, 26 Apr 2026 13:44:27 +0000</pubDate>
      <link>https://forem.com/roynick365/three-small-things-i-added-to-fix-my-ui-that-made-it-actually-useful-in-real-work-5c8a</link>
      <guid>https://forem.com/roynick365/three-small-things-i-added-to-fix-my-ui-that-made-it-actually-useful-in-real-work-5c8a</guid>
      <description>&lt;p&gt;A few days ago I shipped Fix My UI, a browser tool that reviews HTML components and tells you what is wrong. The core idea was simple: paste HTML, get structured feedback, move on.&lt;br&gt;
It worked. But after using it myself for a couple of weeks I kept hitting the same friction points. So I fixed them.&lt;/p&gt;

&lt;p&gt;The friction points and what I did about each one&lt;br&gt;
Too many issues at once.&lt;br&gt;
When I reviewed a complex component I would sometimes get nine or ten issues back. I did not want to see all of them at the same time. I wanted to handle the critical ones first and come back to suggestions later.&lt;br&gt;
I added a severity filter. After a review runs, you can toggle critical, warning, and suggestion on and off independently. It sits in a thin bar below the result tabs and stays out of the way until you need it.&lt;br&gt;
Re-pasting the same HTML over and over.&lt;br&gt;
When I was iterating on a component, fixing one issue, then reviewing again, I kept copying and pasting the same HTML back into the input. On the third or fourth pass it got annoying.&lt;br&gt;
I added session history. The last five reviewed components are stored in memory during the session. Each entry shows the first line of the HTML and the overall score. Click it to load the HTML back into the input instantly. Nothing is stored after you close the tab.&lt;br&gt;
Sharing the review was awkward.&lt;br&gt;
The review output lives across four tabs. When I wanted to share it with someone else, copying tab by tab and pasting into a message was clunky.&lt;br&gt;
I added a Markdown export. One button downloads the complete review as a .md file: issues, improved code, quick fixes, and UX reasoning all in one clean document. I paste it straight into PR comments now.&lt;/p&gt;

&lt;p&gt;None of these changed what the tool does&lt;br&gt;
It still does one thing. You paste a component, you get a structured review. These three additions just made the workflow around that less frustrating.&lt;br&gt;
Demo: roynick365.github.io/fix-my-ui&lt;br&gt;
GitHub: github.com/roynick365/fix-my-ui&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I got tired of fixing the same UI problems… so I built a small tool</title>
      <dc:creator>roynick365</dc:creator>
      <pubDate>Thu, 23 Apr 2026 16:59:45 +0000</pubDate>
      <link>https://forem.com/roynick365/i-got-tired-of-fixing-the-same-ui-problems-so-i-built-a-small-tool-6a</link>
      <guid>https://forem.com/roynick365/i-got-tired-of-fixing-the-same-ui-problems-so-i-built-a-small-tool-6a</guid>
      <description>&lt;p&gt;Every project I work on has the same kind of issues.&lt;/p&gt;

&lt;p&gt;Not big problems.&lt;br&gt;
Small ones.&lt;/p&gt;

&lt;p&gt;A button that says “Go” instead of something meaningful&lt;br&gt;
Spacing that feels slightly off&lt;br&gt;
A layout that works… but doesn’t feel clear&lt;br&gt;
Empty states that look like placeholders&lt;/p&gt;

&lt;p&gt;Nothing is broken. But something feels unfinished.&lt;/p&gt;

&lt;p&gt;And the worst part?&lt;/p&gt;

&lt;p&gt;You notice it. But explaining what’s wrong takes longer than fixing it.&lt;/p&gt;

&lt;p&gt;The real problem&lt;/p&gt;

&lt;p&gt;UI problems are rarely technical.&lt;/p&gt;

&lt;p&gt;They’re small decisions:&lt;/p&gt;

&lt;p&gt;wording&lt;br&gt;
hierarchy&lt;br&gt;
spacing&lt;br&gt;
clarity&lt;/p&gt;

&lt;p&gt;And they keep repeating across projects.&lt;/p&gt;

&lt;p&gt;Most of the time, we fix them:&lt;/p&gt;

&lt;p&gt;late&lt;br&gt;
quickly&lt;br&gt;
inconsistently&lt;/p&gt;

&lt;p&gt;There’s no simple way to review a component and say:&lt;/p&gt;

&lt;p&gt;“Here’s exactly what’s wrong, and here’s how to improve it.”&lt;/p&gt;

&lt;p&gt;So I built something simple&lt;/p&gt;

&lt;p&gt;I made a small tool called FixMyUI.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/roynick365/fix-my-ui" rel="noopener noreferrer"&gt;https://github.com/roynick365/fix-my-ui&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://roynick365.github.io/fix-my-ui" rel="noopener noreferrer"&gt;https://roynick365.github.io/fix-my-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You paste an HTML component, and it gives you:&lt;/p&gt;

&lt;p&gt;issues ranked by severity&lt;br&gt;
an improved version&lt;br&gt;
before-and-after changes&lt;br&gt;
reasoning for each fix&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
Go&lt;/p&gt;

&lt;p&gt;Becomes:&lt;/p&gt;

&lt;p&gt;Get Started&lt;/p&gt;

&lt;p&gt;With explanation:&lt;/p&gt;

&lt;p&gt;“Go” is unclear. A more specific label improves usability.&lt;/p&gt;

&lt;p&gt;What makes this different&lt;/p&gt;

&lt;p&gt;This is not a UI generator.&lt;/p&gt;

&lt;p&gt;It doesn’t try to replace your UI.&lt;/p&gt;

&lt;p&gt;It helps you improve what you already have.&lt;/p&gt;

&lt;p&gt;Why I kept it simple&lt;/p&gt;

&lt;p&gt;I didn’t want another tool that does everything.&lt;/p&gt;

&lt;p&gt;I wanted something I could use during development:&lt;/p&gt;

&lt;p&gt;Paste component&lt;br&gt;
Review issues&lt;br&gt;
Apply fixes&lt;br&gt;
Continue working&lt;/p&gt;

&lt;p&gt;No setup. No learning curve.&lt;/p&gt;

&lt;p&gt;It’s still early&lt;/p&gt;

&lt;p&gt;I’m working on:&lt;/p&gt;

&lt;p&gt;better analysis for edge cases&lt;br&gt;
before/after preview&lt;br&gt;
improving output quality&lt;br&gt;
If this sounds useful&lt;/p&gt;

&lt;p&gt;Try it, break it, suggest improvements.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/roynick365/fix-my-ui" rel="noopener noreferrer"&gt;https://github.com/roynick365/fix-my-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve ever looked at your UI and thought&lt;br&gt;
“something feels off, but I don’t know what” - this tool is for that moment.&lt;/p&gt;

</description>
      <category>design</category>
      <category>showdev</category>
      <category>ui</category>
      <category>ux</category>
    </item>
    <item>
      <title>I built a small CSS library for UI states (because I kept rewriting the same thing)</title>
      <dc:creator>roynick365</dc:creator>
      <pubDate>Tue, 21 Apr 2026 18:07:01 +0000</pubDate>
      <link>https://forem.com/roynick365/i-built-a-small-css-library-for-ui-states-because-i-kept-rewriting-the-same-thing-27ib</link>
      <guid>https://forem.com/roynick365/i-built-a-small-css-library-for-ui-states-because-i-kept-rewriting-the-same-thing-27ib</guid>
      <description>&lt;h1&gt;
  
  
  I built a small CSS library for UI states (because I kept rewriting the same thing)
&lt;/h1&gt;

&lt;p&gt;Most UI libraries focus on buttons, forms, and layouts.&lt;/p&gt;

&lt;p&gt;But in real projects, a lot of time goes into something else:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;empty screens&lt;/li&gt;
&lt;li&gt;loading states&lt;/li&gt;
&lt;li&gt;error messages&lt;/li&gt;
&lt;li&gt;first-time user experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And somehow, these are always built last.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I noticed a pattern in almost every project I worked on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty states were inconsistent&lt;/li&gt;
&lt;li&gt;Loading states were rushed&lt;/li&gt;
&lt;li&gt;Error messages felt generic&lt;/li&gt;
&lt;li&gt;Onboarding screens were overthought&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing was technically hard — just repetitive and easy to ignore until the end.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I built something small
&lt;/h2&gt;

&lt;p&gt;I created &lt;strong&gt;StateKit&lt;/strong&gt; — a lightweight CSS library focused only on UI states.&lt;/p&gt;

&lt;p&gt;No framework. No setup.&lt;/p&gt;

&lt;p&gt;Just copy and use.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/roynick365/statekit" rel="noopener noreferrer"&gt;https://github.com/roynick365/statekit&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://roynick365.github.io/statekit/" rel="noopener noreferrer"&gt;https://roynick365.github.io/statekit/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What it includes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Empty state&lt;/li&gt;
&lt;li&gt;Empty search&lt;/li&gt;
&lt;li&gt;Error state&lt;/li&gt;
&lt;li&gt;404 page&lt;/li&gt;
&lt;li&gt;Success state&lt;/li&gt;
&lt;li&gt;Loading spinner&lt;/li&gt;
&lt;li&gt;Loading skeleton&lt;/li&gt;
&lt;li&gt;Onboarding state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each component is plain HTML + CSS and can be dropped into any project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sk-empty"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;No data available&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Create your first item to get started.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sk-btn"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Create&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why this exists
&lt;/h2&gt;

&lt;p&gt;I didn’t want another UI framework.&lt;/p&gt;

&lt;p&gt;I just wanted something to handle the parts that usually get rushed or overlooked.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I learned building this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Simple tools are harder than they look&lt;/li&gt;
&lt;li&gt;Consistency matters more than complexity&lt;/li&gt;
&lt;li&gt;Most “UI problems” are actually small decisions repeated many times&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;More variants for each state&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;li&gt;Accessibility improvements&lt;/li&gt;
&lt;li&gt;Possibly React wrappers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;If you have suggestions or want to contribute:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/roynick365/statekit" rel="noopener noreferrer"&gt;https://github.com/roynick365/statekit&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you’ve ever rebuilt the same empty or loading state more than once, this might help.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>css</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
