<?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: Victor Francelino</title>
    <description>The latest articles on Forem by Victor Francelino (@victin16).</description>
    <link>https://forem.com/victin16</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%2F3702983%2F0e4c9c54-479a-4aa3-b4b7-052122aec292.jpg</url>
      <title>Forem: Victor Francelino</title>
      <link>https://forem.com/victin16</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/victin16"/>
    <language>en</language>
    <item>
      <title>I spent 1 month building my first NPM package from scratch, and here is the result</title>
      <dc:creator>Victor Francelino</dc:creator>
      <pubDate>Thu, 26 Mar 2026 19:44:04 +0000</pubDate>
      <link>https://forem.com/victin16/i-spent-1-month-building-my-first-npm-package-from-scratch-and-here-is-the-result-3hk1</link>
      <guid>https://forem.com/victin16/i-spent-1-month-building-my-first-npm-package-from-scratch-and-here-is-the-result-3hk1</guid>
      <description>&lt;p&gt;The idea for this project came up when I discovered &lt;a href="https://github.com/millionco/react-doctor" rel="noopener noreferrer"&gt;React Doctor&lt;/a&gt;. I really liked their concept and thought about a way to bring this kind of auditing tool outside of the React ecosystem. That's how I created Web Doctor.&lt;/p&gt;

&lt;p&gt;Web Doctor is a CLI tool that analyzes HTML, CSS, and JS code, looking for performance improvement opportunities, accessibility enhancements, and critical security issues.&lt;/p&gt;

&lt;p&gt;Here are some of the checks Web Doctor currently performs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checks the actual file size and format of used images, recommending compression or modern formats (WebP/AVIF).&lt;/li&gt;
&lt;li&gt;Verifies if the &lt;code&gt;&amp;lt;body/&amp;gt;&lt;/code&gt; contains the minimum required semantic structure (like &lt;code&gt;&amp;lt;header/&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav/&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;main/&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;footer/&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Warns about the use of deprecated tags and attributes that break accessibility.&lt;/li&gt;
&lt;li&gt;Finds empty rules in CSS.&lt;/li&gt;
&lt;li&gt;Warns about the use of &lt;code&gt;!important&lt;/code&gt; in CSS.&lt;/li&gt;
&lt;li&gt;Identifies and alerts about dangerous JS practices, such as the use of &lt;code&gt;eval()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The package is still under active development, and my goal is to turn it into a true static code consulting tool. Here are the next features I plan to implement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heading hierarchy checking: To ensure the document doesn't skip logical levels (e.g., jumping from an &lt;code&gt;&amp;lt;h1/&amp;gt;&lt;/code&gt; straight to an &lt;code&gt;&amp;lt;h3/&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Semantic density calculation: To warn when a file has an excess of &lt;code&gt;&amp;lt;div/&amp;gt;&lt;/code&gt; tags compared to structural/semantic tags.&lt;/li&gt;
&lt;li&gt;Unused CSS detection: Identifying classes declared in the CSS that are not being used in any of the analyzed HTML tags.&lt;/li&gt;
&lt;li&gt;Color contrast checking: To ensure text meets WCAG readability standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any ideas for new features, or if you just want to share your thoughts and feedback on the project, please let me know in the comments!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/web-doctor-cli" rel="noopener noreferrer"&gt;NPM Package&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/VictorFrancelino/web-doctor-cli" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>bunjs</category>
    </item>
  </channel>
</rss>
