<?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: Saiful Siam</title>
    <description>The latest articles on DEV Community by Saiful Siam (@motionmind2007).</description>
    <link>https://dev.to/motionmind2007</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3979365%2F9abed9cf-00b7-4008-8a9d-28e92bca4283.jpeg</url>
      <title>DEV Community: Saiful Siam</title>
      <link>https://dev.to/motionmind2007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/motionmind2007"/>
    <language>en</language>
    <item>
      <title>Building Dynamic Routing for My JavaScript Framework (Levelo JS 2.2.0) — One Last Test Before Bed Changed Everything 🚀</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Mon, 10 Aug 2026 14:59:37 +0000</pubDate>
      <link>https://dev.to/motionmind2007/building-dynamic-routing-for-my-javascript-framework-levelo-js-220-one-last-test-before-bed-4m12</link>
      <guid>https://dev.to/motionmind2007/building-dynamic-routing-for-my-javascript-framework-levelo-js-220-one-last-test-before-bed-4m12</guid>
      <description>&lt;h2&gt;
  
  
  Building Dynamic Routing for My JavaScript Framework (Levelo JS 2.2.0) — One Last Test Before Bed Changed Everything 🚀
&lt;/h2&gt;

&lt;p&gt;I'm a student who enjoys building things from scratch.&lt;/p&gt;

&lt;p&gt;For the past few months, I've been researching and building my own JavaScript framework called &lt;strong&gt;Levelo JS&lt;/strong&gt;. Every feature I add teaches me something new about how modern frameworks work internally.&lt;/p&gt;

&lt;p&gt;Today I'm releasing &lt;strong&gt;Levelo JS v2.2.0&lt;/strong&gt;, a feature-focused update that introduces dynamic routing, a new &lt;code&gt;params&lt;/code&gt; API, &lt;code&gt;ref&lt;/code&gt; support, and several improvements to the routing system.&lt;/p&gt;




&lt;h2&gt;
  
  
  It Worked... Until I Tested It 😅
&lt;/h2&gt;

&lt;p&gt;After hours of work, I finally finished implementing dynamic routing.&lt;/p&gt;

&lt;p&gt;I added route pattern parsing.&lt;/p&gt;

&lt;p&gt;I added parameter extraction.&lt;/p&gt;

&lt;p&gt;I connected everything together.&lt;/p&gt;

&lt;p&gt;Everything looked correct.&lt;/p&gt;

&lt;p&gt;It was already late at night, and before going to sleep I thought,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Let me test it one last time."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That one decision completely changed my evening.&lt;/p&gt;

&lt;p&gt;The router simply refused to work.&lt;/p&gt;

&lt;p&gt;No dynamic routes.&lt;/p&gt;

&lt;p&gt;No page switching.&lt;/p&gt;

&lt;p&gt;Nothing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bug I Couldn't Stop Thinking About
&lt;/h2&gt;

&lt;p&gt;Since Levelo JS is a Single Page Application framework, page navigation happens without reloading the browser.&lt;/p&gt;

&lt;p&gt;When I tested the new router, something felt completely wrong.&lt;/p&gt;

&lt;p&gt;At first, I thought the bug was somewhere inside my route matching logic.&lt;/p&gt;

&lt;p&gt;So I checked the regular expressions.&lt;/p&gt;

&lt;p&gt;I checked parameter parsing.&lt;/p&gt;

&lt;p&gt;I checked the navigation flow.&lt;/p&gt;

&lt;p&gt;Everything looked fine.&lt;/p&gt;

&lt;p&gt;But the router still wasn't working.&lt;/p&gt;

&lt;p&gt;It was already late, so I decided to stop for the night and get some sleep.&lt;/p&gt;

&lt;p&gt;Even then, the bug stayed in the back of my mind.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Next Morning
&lt;/h2&gt;

&lt;p&gt;The next morning, I opened my editor almost immediately.&lt;/p&gt;

&lt;p&gt;Instead of writing new code, I started reading my existing implementation.&lt;/p&gt;

&lt;p&gt;Then I suddenly remembered something.&lt;/p&gt;

&lt;p&gt;I had actually faced a very similar problem before...&lt;/p&gt;

&lt;p&gt;...and somehow completely forgot about it. 😂&lt;/p&gt;

&lt;p&gt;Sometimes your own old code becomes the best documentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem
&lt;/h2&gt;

&lt;p&gt;The router wasn't the problem.&lt;/p&gt;

&lt;p&gt;The route matching wasn't the problem.&lt;/p&gt;

&lt;p&gt;The History API wasn't the problem.&lt;/p&gt;

&lt;p&gt;The real issue was how I was updating the DOM.&lt;/p&gt;

&lt;p&gt;Instead of trying to reuse the existing rendered page, I discovered that removing the old page node completely and creating a fresh one worked much better for Levelo JS.&lt;/p&gt;

&lt;p&gt;The change itself was surprisingly small:&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;container&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentRenderedNode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After removing the previous page, the framework creates a new component instance and mounts it again.&lt;/p&gt;

&lt;p&gt;That simple architectural change fixed the routing issue.&lt;/p&gt;

&lt;p&gt;Looking back, solving it the next morning taught me an important lesson about how my framework should manage DOM updates.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dynamic Routing is Finally Here 🎉
&lt;/h2&gt;

&lt;p&gt;With that solved, Levelo JS now supports routes like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Page&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/user/:id"&lt;/span&gt; &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;UserPage&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can access route parameters directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;levelojs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Internally, Levelo JS now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses route patterns into optimized regular expressions.&lt;/li&gt;
&lt;li&gt;Extracts dynamic parameters automatically.&lt;/li&gt;
&lt;li&gt;Updates pages without refreshing the browser.&lt;/li&gt;
&lt;li&gt;Integrates with the History API for SPA navigation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Cleaner Router Architecture
&lt;/h2&gt;

&lt;p&gt;While implementing dynamic routing, I also decided to reorganize the routing system.&lt;/p&gt;

&lt;p&gt;Previously, most of the routing logic lived inside a single runtime file.&lt;/p&gt;

&lt;p&gt;Now it's separated into dedicated modules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/router/
├── Page.ts
├── Pages.ts
└── params.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structure is much easier to maintain and gives me a better foundation for future routing features.&lt;/p&gt;




&lt;h2&gt;
  
  
  A New &lt;code&gt;params&lt;/code&gt; API
&lt;/h2&gt;

&lt;p&gt;Since dynamic routes are now supported, I wanted accessing route parameters to feel simple.&lt;/p&gt;

&lt;p&gt;That's why Levelo JS now officially exports a &lt;code&gt;params&lt;/code&gt; API, making it easy to read URL parameters anywhere they're needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;ref&lt;/code&gt; Support
&lt;/h2&gt;

&lt;p&gt;After finishing the routing system, I thought,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why not add &lt;code&gt;ref&lt;/code&gt; support as well?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fortunately, this feature was much smoother to implement.&lt;/p&gt;

&lt;p&gt;Levelo JS now supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object refs&lt;/li&gt;
&lt;li&gt;Callback refs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;along with proper TypeScript typings for native DOM elements.&lt;/p&gt;




&lt;h2&gt;
  
  
  Better SPA Title Handling
&lt;/h2&gt;

&lt;p&gt;This update also fixes a small but important SPA issue.&lt;/p&gt;

&lt;p&gt;Previously, if a page didn't define its own &lt;code&gt;head()&lt;/code&gt; configuration, the previous page title could remain visible.&lt;/p&gt;

&lt;p&gt;Now Levelo JS automatically restores the default document title whenever necessary, making navigation behave much more naturally.&lt;/p&gt;




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

&lt;p&gt;Building a framework isn't only about adding features.&lt;/p&gt;

&lt;p&gt;It's also about questioning your own assumptions.&lt;/p&gt;

&lt;p&gt;This time, I was convinced the router itself was broken.&lt;/p&gt;

&lt;p&gt;In reality, the routing algorithm was working.&lt;/p&gt;

&lt;p&gt;The regular expressions were working.&lt;/p&gt;

&lt;p&gt;The parameter extraction was working.&lt;/p&gt;

&lt;p&gt;The actual problem was the DOM update strategy.&lt;/p&gt;

&lt;p&gt;Sometimes the hardest bugs aren't caused by complicated code—they're caused by a small architectural decision hiding in plain sight.&lt;/p&gt;




&lt;h2&gt;
  
  
  Still Learning
&lt;/h2&gt;

&lt;p&gt;One thing I'd like to mention is that I'm still a student.&lt;/p&gt;

&lt;p&gt;Levelo JS isn't a commercial framework—it's a research project that I build to understand how modern JavaScript frameworks work internally.&lt;/p&gt;

&lt;p&gt;Every new feature, every bug, and every refactor teaches me something new.&lt;/p&gt;

&lt;p&gt;Version &lt;strong&gt;2.2.0&lt;/strong&gt; is another step in that learning journey, and I'm excited to keep improving it.&lt;/p&gt;

&lt;p&gt;If you're interested in framework development or enjoy seeing how things work under the hood, I'd love to hear your feedback.&lt;/p&gt;

&lt;p&gt;Thanks for reading! ❤️&lt;/p&gt;

</description>
      <category>levelojs</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Kivex Just Crossed 300+ Icons — 107 New Icons and Package Fixes</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Thu, 06 Aug 2026 15:02:01 +0000</pubDate>
      <link>https://dev.to/motionmind2007/kivex-just-crossed-300-icons-107-new-icons-and-package-fixes-53eh</link>
      <guid>https://dev.to/motionmind2007/kivex-just-crossed-300-icons-107-new-icons-and-package-fixes-53eh</guid>
      <description>&lt;h2&gt;
  
  
  Kivex Just Crossed 300+ Icons — 107 New Icons and Package Fixes
&lt;/h2&gt;

&lt;p&gt;Kivex just got a pretty big update. 🚀&lt;/p&gt;

&lt;p&gt;With the latest update, &lt;strong&gt;107 new icons&lt;/strong&gt; have been added to the Kivex ecosystem, bringing the total collection to &lt;strong&gt;309 icons&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That means Kivex has officially crossed the &lt;strong&gt;300+ icon milestone&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And while the icon collection is the main highlight of this update, there were also a few small but important improvements under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎨 107 New Icons
&lt;/h2&gt;

&lt;p&gt;The biggest part of this update is, of course, the icons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;107 new icons&lt;/strong&gt; have been added to Kivex, expanding the collection from its previous size to &lt;strong&gt;309 icons&lt;/strong&gt; in total.&lt;/p&gt;

&lt;p&gt;This gives developers a much broader set of icons to work with while keeping Kivex focused on a consistent and reusable icon system.&lt;/p&gt;

&lt;p&gt;Whether you're building a web application, developer tool, dashboard, mobile application, or something completely different, having a larger icon set makes it easier to stay within the same visual language instead of mixing icons from multiple libraries.&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 Kivex Is Now a 300+ Icon Ecosystem
&lt;/h2&gt;

&lt;p&gt;Kivex isn't just a single icon package.&lt;/p&gt;

&lt;p&gt;It's an ecosystem designed to make the same icon collection available across different platforms and frameworks.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;309 icons&lt;/strong&gt; now available, the ecosystem is continuing to grow while keeping the goal simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;One icon collection. Multiple platforms. Consistent design.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal isn't simply to keep increasing the number of icons.&lt;/p&gt;

&lt;p&gt;It's to build a collection that developers can actually use across their projects without having to constantly search for another icon library whenever they need something new.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Small Package Fixes
&lt;/h2&gt;

&lt;p&gt;Along with the new icons, a few small bugs were also fixed in the package ecosystem.&lt;/p&gt;

&lt;p&gt;Packages including &lt;strong&gt;Kivex React&lt;/strong&gt; and &lt;strong&gt;Kivex Solid&lt;/strong&gt;, along with some other Kivex packages, received fixes to their &lt;code&gt;package.json&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;These weren't major API changes or flashy new features, but they were important cleanup fixes to make the packages more reliable and consistent for developers using them.&lt;/p&gt;

&lt;p&gt;Sometimes the small fixes matter just as much as the big features.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What's Next for Kivex?
&lt;/h2&gt;

&lt;p&gt;Crossing 300 icons is a nice milestone, but this isn't the finish line.&lt;/p&gt;

&lt;p&gt;Kivex is still evolving, and the focus remains on expanding the icon collection while improving the ecosystem around it.&lt;/p&gt;

&lt;p&gt;For now:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;107 new icons.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;309 icons total.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A few package fixes.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;And Kivex keeps moving forward.&lt;/strong&gt; ❤️&lt;/p&gt;

&lt;p&gt;If you've been using Kivex already, thank you for being part of the journey.&lt;/p&gt;

&lt;p&gt;And if you haven't tried it yet, now might be a pretty good time to take a look.&lt;/p&gt;

&lt;h2&gt;
  
  
  ❤️ Like Kivex?
&lt;/h2&gt;

&lt;p&gt;If you find the Kivex ecosystem useful or simply like what we're building, consider giving the project a ⭐ &lt;strong&gt;Star on GitHub&lt;/strong&gt;. It helps the project get more visibility and motivates us to keep improving and expanding the ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/MotionMind2007/Kivex" rel="noopener noreferrer"&gt;⭐ Star Kivex on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you'd like to become a &lt;strong&gt;contributor to the Kivex ecosystem&lt;/strong&gt;, you're more than welcome!&lt;/p&gt;

&lt;p&gt;One of the best ways to contribute is by &lt;strong&gt;creating new icons&lt;/strong&gt; and helping expand the Kivex icon collection. If you have ideas for useful icons that you'd like to see in Kivex, we'd love to have you contribute them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your icons could become part of Kivex.&lt;/strong&gt; 🎨&lt;/p&gt;

&lt;p&gt;Kivex is still growing, and we'd love to build that growth together with the community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;309 icons today. More to come, In-sha-Allah. 🚀&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kivex</category>
      <category>webdev</category>
      <category>svgicons</category>
    </item>
    <item>
      <title>LeveloJS v2.1.2 — A Cleaner JSX Runtime Architecture</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Thu, 23 Jul 2026 12:35:06 +0000</pubDate>
      <link>https://dev.to/motionmind2007/levelojs-v212-a-cleaner-jsx-runtime-architecture-4hoj</link>
      <guid>https://dev.to/motionmind2007/levelojs-v212-a-cleaner-jsx-runtime-architecture-4hoj</guid>
      <description>&lt;h3&gt;
  
  
  LeveloJS v2.1.2 — A Cleaner JSX Runtime Architecture
&lt;/h3&gt;

&lt;p&gt;After releasing &lt;strong&gt;LeveloJS v2.1.1&lt;/strong&gt;, I started writing the documentation for the new JSX type support. While reviewing the implementation, I realized that although everything worked correctly, there was a flaw in the internal architecture.&lt;/p&gt;

&lt;p&gt;The JSX runtime and its type definitions were connected in a way that wasn't as clean or maintainable as I wanted. Instead of leaving it that way, I paused the documentation work and decided to refactor the entire JSX module before moving forward.&lt;/p&gt;

&lt;p&gt;The result is &lt;strong&gt;LeveloJS v2.1.2&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why another update so soon?
&lt;/h2&gt;

&lt;p&gt;Sometimes a feature is &lt;strong&gt;functionally correct&lt;/strong&gt;, but the implementation behind it isn't ideal.&lt;/p&gt;

&lt;p&gt;As I prepared to write the documentation, I noticed that the JSX module structure could become difficult to maintain as the framework grows. Rather than building more features on top of that design, I chose to improve the foundation first.&lt;/p&gt;

&lt;p&gt;This release is mostly about &lt;strong&gt;internal architecture&lt;/strong&gt;, &lt;strong&gt;TypeScript integration&lt;/strong&gt;, and &lt;strong&gt;developer experience&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Changed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Reorganized the JSX Runtime
&lt;/h3&gt;

&lt;p&gt;Previously, the JSX runtime and its type declarations lived in different locations.&lt;/p&gt;

&lt;p&gt;They have now been reorganized into a dedicated module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/runtime/jsx/
├── jsx-runtime.ts
└── jsx.d.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keeping the runtime implementation and its type definitions together makes the project structure much easier to understand and maintain.&lt;/p&gt;




&lt;h3&gt;
  
  
  Removed Unnecessary Coupling
&lt;/h3&gt;

&lt;p&gt;Previously, &lt;code&gt;jsx.d.ts&lt;/code&gt; relied on the package entry (&lt;code&gt;index.ts&lt;/code&gt;) to expose JSX types.&lt;/p&gt;

&lt;p&gt;In v2.1.2, the type definitions are linked directly with &lt;code&gt;jsx-runtime.ts&lt;/code&gt;, allowing the runtime to manage its own typings without depending on the root entry point.&lt;/p&gt;

&lt;p&gt;This creates a cleaner separation of responsibilities and simplifies the internal architecture.&lt;/p&gt;




&lt;h3&gt;
  
  
  Improved DTS Bundling
&lt;/h3&gt;

&lt;p&gt;While restructuring the JSX module, I also fixed declaration build issues that appeared during &lt;code&gt;tsup&lt;/code&gt; builds.&lt;/p&gt;

&lt;p&gt;This resolves errors such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Module has no exported member 'h'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The runtime and declaration files are now synchronized correctly, resulting in more reliable declaration generation.&lt;/p&gt;




&lt;h3&gt;
  
  
  Better Ambient JSX Typings
&lt;/h3&gt;

&lt;p&gt;This release also improves the overall TypeScript experience.&lt;/p&gt;

&lt;p&gt;It fixes issues including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This JSX tag requires 'h' to be in scope
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and CSS side-effect import errors by integrating the ambient JSX types directly into the new runtime pipeline.&lt;/p&gt;

&lt;p&gt;As a result, JSX works more naturally with fewer manual configuration steps.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Framework development isn't only about introducing new APIs.&lt;/p&gt;

&lt;p&gt;A clean internal architecture makes future development easier, reduces maintenance, and helps prevent issues before they appear.&lt;/p&gt;

&lt;p&gt;Although most users won't notice these improvements immediately, they provide a much stronger foundation for upcoming features in LeveloJS.&lt;/p&gt;




&lt;h2&gt;
  
  
  Changelog
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fixed &amp;amp; Refactored
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reorganized the JSX runtime into a dedicated &lt;code&gt;src/runtime/jsx/&lt;/code&gt; module.&lt;/li&gt;
&lt;li&gt;Moved &lt;code&gt;jsx.d.ts&lt;/code&gt; and &lt;code&gt;jsx-runtime.ts&lt;/code&gt; into the same directory.&lt;/li&gt;
&lt;li&gt;Removed the dependency between &lt;code&gt;jsx.d.ts&lt;/code&gt; and the package entry point.&lt;/li&gt;
&lt;li&gt;Linked JSX type definitions directly with the runtime module.&lt;/li&gt;
&lt;li&gt;Fixed DTS bundling issues during &lt;code&gt;tsup&lt;/code&gt; builds.&lt;/li&gt;
&lt;li&gt;Resolved &lt;code&gt;Module has no exported member 'h'&lt;/code&gt; build errors.&lt;/li&gt;
&lt;li&gt;Fixed ambient JSX typing issues.&lt;/li&gt;
&lt;li&gt;Resolved &lt;code&gt;This JSX tag requires 'h' to be in scope&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improved CSS side-effect import support.&lt;/li&gt;
&lt;li&gt;Simplified the internal JSX architecture for future development.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;With the JSX runtime architecture now cleaned up, I can continue working on documentation and future framework features with a much stronger foundation.&lt;/p&gt;

&lt;p&gt;More improvements are already on the way.&lt;/p&gt;




&lt;p&gt;If you're interested in modern JavaScript frameworks or TypeScript tooling, feel free to check out the project and share your feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/MotionMind2007/Levelo-JS" rel="noopener noreferrer"&gt;https://github.com/MotionMind2007/Levelo-JS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://levelojs.motionmind.me" rel="noopener noreferrer"&gt;https://levelojs.motionmind.me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Splitting the Compiler from the Runtime in Levelo JS</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Sat, 18 Jul 2026 05:24:53 +0000</pubDate>
      <link>https://dev.to/motionmind2007/splitting-the-compiler-from-the-runtime-in-levelo-js-43gp</link>
      <guid>https://dev.to/motionmind2007/splitting-the-compiler-from-the-runtime-in-levelo-js-43gp</guid>
      <description>&lt;h2&gt;
  
  
  Splitting the Compiler from the Runtime in Levelo JS
&lt;/h2&gt;

&lt;p&gt;Yesterday was focused on improving the architecture of &lt;strong&gt;Levelo JS&lt;/strong&gt; rather than adding flashy features.&lt;/p&gt;

&lt;p&gt;One of the biggest changes was separating the Vite compiler from the core framework.&lt;/p&gt;

&lt;p&gt;Previously, the compiler lived inside the main &lt;code&gt;levelojs&lt;/code&gt; package. Now it has been extracted into its own package:&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;levelojs vite-plugin-levelojs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;or&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm add levelojs vite-plugin-levelojs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the runtime cleaner, easier to maintain, and allows the compiler to evolve independently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Batch Updates
&lt;/h3&gt;

&lt;p&gt;Levelo JS now includes a new &lt;code&gt;batch()&lt;/code&gt; API.&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="nf"&gt;batch&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="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;setUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;MotionMind&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&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;p&gt;Multiple state updates are grouped together, reducing unnecessary reactive executions and improving performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reactive Input Tracking
&lt;/h3&gt;

&lt;p&gt;Reactive value binding for form elements has been improved.&lt;/p&gt;

&lt;p&gt;Previously, updating a signal didn't automatically synchronize the value of inputs in every case.&lt;/p&gt;

&lt;p&gt;Now developers can simply write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setMessage&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;message&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;onInput&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The input stays synchronized with the reactive state automatically.&lt;/p&gt;




&lt;h3&gt;
  
  
  Dedicated Vite Plugin
&lt;/h3&gt;

&lt;p&gt;The compiler is now available as an official package:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vite-plugin-levelojs&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It compiles JSX into optimized h() calls at build time, eliminating the need for a Virtual DOM.&lt;/p&gt;




&lt;h3&gt;
  
  
  Runtime Refactoring
&lt;/h3&gt;

&lt;p&gt;The internal JSX runtime has also been reorganized.&lt;/p&gt;

&lt;p&gt;The h() factory has been extracted into its own runtime module for better code organization and maintainability.&lt;/p&gt;




&lt;h3&gt;
  
  
  Verified in a Real Project
&lt;/h3&gt;

&lt;p&gt;After publishing the new packages, everything was tested inside a real Vite application.&lt;/p&gt;

&lt;p&gt;The compiler, runtime, JSX transformation, and reactivity all worked as expected.&lt;/p&gt;




&lt;p&gt;This update isn't about adding new UI features.&lt;/p&gt;

&lt;p&gt;It's about making the foundation stronger before building bigger things on top of it.&lt;/p&gt;

&lt;p&gt;More improvements are coming soon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/motionmind2007/levelojs" rel="noopener noreferrer"&gt;https://github.com/motionmind2007/levelojs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://levelojs.motionmind.me" rel="noopener noreferrer"&gt;https://levelojs.motionmind.me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>vite</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing Kivex: A Production-Ready Multi-Platform Icon Ecosystem</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Fri, 17 Jul 2026 06:47:12 +0000</pubDate>
      <link>https://dev.to/motionmind2007/introducing-kivex-a-production-ready-multi-platform-icon-ecosystem-mh8</link>
      <guid>https://dev.to/motionmind2007/introducing-kivex-a-production-ready-multi-platform-icon-ecosystem-mh8</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Kivex: A Production-Ready Multi-Platform Icon Ecosystem
&lt;/h1&gt;

&lt;p&gt;Every developer has faced this situation.&lt;/p&gt;

&lt;p&gt;You start a new project, search for an icon library, install it, and begin building.&lt;/p&gt;

&lt;p&gt;A few weeks later, another project comes along—this time with a different framework. Suddenly you're searching for another icon package, learning a different API, and trying to keep the design consistent across platforms.&lt;/p&gt;

&lt;p&gt;I wanted a better solution.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;Kivex&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kivex?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kivex&lt;/strong&gt; (&lt;strong&gt;Kinetic Vector Exchange&lt;/strong&gt;) is an open-source, production-ready icon ecosystem designed for modern applications.&lt;/p&gt;

&lt;p&gt;Instead of maintaining different icon libraries for different frameworks, Kivex provides a single collection of &lt;strong&gt;200+ lightweight, pixel-perfect SVG icons&lt;/strong&gt; that can be used across multiple platforms while keeping the same visual identity.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;One icon library. Multiple platforms. Consistent design.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Kivex?
&lt;/h2&gt;

&lt;p&gt;When building applications across different technologies, consistency matters.&lt;/p&gt;

&lt;p&gt;Kivex focuses on providing the same icons, the same names, and the same design language everywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;200+ pixel-perfect SVG icons&lt;/li&gt;
&lt;li&gt;Multi-platform ecosystem&lt;/li&gt;
&lt;li&gt;Lightweight and optimized&lt;/li&gt;
&lt;li&gt;TypeScript support&lt;/li&gt;
&lt;li&gt;MIT Licensed&lt;/li&gt;
&lt;li&gt;Completely open source&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Current Packages
&lt;/h2&gt;

&lt;p&gt;The Kivex ecosystem currently includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;kivex-icons&lt;/code&gt; — Core JavaScript package&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-react&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-levelo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-solid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-svelte&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-vue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex-react-native&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kivex_flutter&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every package shares the same icon collection, making it easy to switch between frameworks without changing icon names or redesigning your UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Designed for Modern Development
&lt;/h2&gt;

&lt;p&gt;Whether you're building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Web Applications&lt;/li&gt;
&lt;li&gt;📱 Mobile Apps&lt;/li&gt;
&lt;li&gt;🖥️ Desktop Applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kivex aims to provide a familiar and consistent developer experience.&lt;/p&gt;

&lt;p&gt;Instead of treating every framework as a separate project, Kivex treats them as part of the same ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Vision
&lt;/h2&gt;

&lt;p&gt;Kivex isn't just another icon package.&lt;/p&gt;

&lt;p&gt;The vision is to build a complete icon ecosystem that developers can rely on regardless of the framework they're using.&lt;/p&gt;

&lt;p&gt;Future plans include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More icons&lt;/li&gt;
&lt;li&gt;More platform integrations&lt;/li&gt;
&lt;li&gt;Official documentation website&lt;/li&gt;
&lt;li&gt;Icon search experience&lt;/li&gt;
&lt;li&gt;Better developer tools&lt;/li&gt;
&lt;li&gt;Community-driven contributions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is only the beginning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Source First
&lt;/h2&gt;

&lt;p&gt;Kivex is developed as an open-source project because great developer tools grow through community collaboration.&lt;/p&gt;

&lt;p&gt;Bug reports, feature requests, pull requests, and discussions are always welcome.&lt;/p&gt;

&lt;p&gt;If you'd like to contribute, feel free to join the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;

&lt;p&gt;⭐ Repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/MotionMind2007/Kivex" rel="noopener noreferrer"&gt;https://github.com/MotionMind2007/Kivex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find the project interesting, consider giving it a ⭐.&lt;/p&gt;

&lt;p&gt;Feedback and contributions are always appreciated.&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;This is the first public introduction to Kivex, and I'm excited to continue building it with the open-source community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Levelo-Js v2: The TypeScript Rebirth</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:33:45 +0000</pubDate>
      <link>https://dev.to/motionmind2007/levelo-js-v2-the-typescript-rebirth-412c</link>
      <guid>https://dev.to/motionmind2007/levelo-js-v2-the-typescript-rebirth-412c</guid>
      <description>&lt;p&gt;If you have ever built a custom JavaScript framework from scratch, you know that the line between a smooth, memory-clean engine and a total memory-leak disaster is incredibly thin.&lt;/p&gt;

&lt;p&gt;With version 1, &lt;strong&gt;Levelo-Js&lt;/strong&gt; proved that lightweight reactive UIs could be fast and intuitive. But as codebases grow, raw JavaScript starts to feel like writing code blindfolded. The dreaded &lt;code&gt;undefined is not a function&lt;/code&gt; is always lurking around the corner.&lt;/p&gt;

&lt;p&gt;Today, we are taking a massive leap forward. Meet &lt;strong&gt;Levelo-Js v2&lt;/strong&gt;—a complete ground-up architectural rewrite, fully re-born in TypeScript, with enterprise-grade build tooling and absolute bulletproof memory management.&lt;/p&gt;

&lt;p&gt;Let’s dive into what makes v2 an absolute game-changer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Pillars of the TypeScript Rebirth
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Full TypeScript Migration &amp;amp; Modern Bundling
&lt;/h3&gt;

&lt;p&gt;We didn't just add types; we transformed the entire runtime engine core and internal modules from &lt;code&gt;.js&lt;/code&gt; to &lt;code&gt;.ts&lt;/code&gt;. Every piece of code is now strictly type-safe, offering self-documenting APIs and flawless IDE autocompletion (IntelliSense) right out of the box.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We also waved goodbye to publishing raw, uncompiled source files. Levelo-Js v2 now ships with production bundles powered by &lt;strong&gt;&lt;code&gt;tsup&lt;/code&gt;&lt;/strong&gt;. The engine is now pre-bundled into highly optimized, tree-shakable ES Modules (&lt;code&gt;compiler/index.js&lt;/code&gt;), making your production build lighter than ever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Hierarchical Tracking Context (&lt;code&gt;owner.ts&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Handling nested reactive scopes and side-effects can easily lead to chaotic state bugs if not tracked properly. v2 introduces a robust &lt;strong&gt;Reactive Ownership Architecture&lt;/strong&gt;. This creates a clean parent-child tracking hierarchy, ensuring that nested state updates always know exactly where they belong in the application tree.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Ownership-Driven Effects &amp;amp; Zero Memory Leaks
&lt;/h3&gt;

&lt;p&gt;Memory leaks are the silent killers of Single Page Applications (SPAs). In v2, our core &lt;code&gt;effect()&lt;/code&gt; engine has been deeply integrated with the new ownership layer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The breakthrough? It now &lt;strong&gt;auto-disposes stale tracking dependencies&lt;/strong&gt; automatically. We ran heap snapshots before and after intense button-press and state transitions—the memory profile stays completely flat (stabilizing perfectly around 2.5MB). Zero bloat. Absolute mitigation against memory leaks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. Advanced Lifecycle Mechanisms
&lt;/h3&gt;

&lt;p&gt;To give you pixel-perfect control over your components, we introduced two advanced lifecycle hooks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;mount()&lt;/code&gt;: Safely schedules tasks &lt;em&gt;precisely&lt;/em&gt; after the browser finishes synchronous layout painting. Perfect for clean DOM manipulations and secure API fetches.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;cleanup()&lt;/code&gt;: Automatically captures and wipes out active intervals, event listeners, and pending asynchronous tasks during state or route transitions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Bulletproofing the Developer Experience (DX)
&lt;/h2&gt;

&lt;p&gt;A great framework isn't just about core reactive algorithms; it's about how it handles real-world ecosystem edge cases. Along with the core v2 rewrite, we've polished major real-world behaviors:&lt;/p&gt;

&lt;h3&gt;
  
  
  Standardized SPA Routing &amp;amp; High-Fidelity 404
&lt;/h3&gt;

&lt;p&gt;In modern Single Page Applications, client-side routing must be bulletproof. We redesigned the core SPA fallback viewport (&lt;code&gt;Page Not Found&lt;/code&gt;) with a high-fidelity native CSS layout. If a user wanders off to an unregistered route (like &lt;code&gt;/asdf&lt;/code&gt;), the framework gracefully catches it, preventing server crashes and serving a gorgeous, responsive, center-aligned 404 screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smart SVG Compiler Fixes
&lt;/h3&gt;

&lt;p&gt;Compilers can sometimes be over-aggressive. We caught and squashed an tricky compiler bug where camelCase SVG attributes like &lt;code&gt;viewBox&lt;/code&gt; were accidentally being converted to kebab-case (&lt;code&gt;view-box&lt;/code&gt;), causing rendering glitches. v2 introduces strict exception mapping for core SVG properties—your icons and vectors will now render flawlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Experience Levelo-Js v2 Today
&lt;/h2&gt;

&lt;p&gt;Levelo-Js v2 behaves exactly how you expect a modern, high-performance framework to behave—lightning fast, type-safe, and incredibly respectful of your user's system memory. &lt;/p&gt;

&lt;p&gt;Whether you are looking for zero-config autocomplete, strict compile-time safety, or zero memory leaks, v2 is ready for your next project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a fresh, fully optimized Levelo-Js v2 template instantly&lt;/span&gt;
npx create-levelo-app my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔗 Links &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="//github.com/motionmind2007/levelo-js"&gt;github.com/motionmind2007/levelo-js&lt;/a&gt; — Check out the source code, open issues, or contribute!&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Official Documentation:&lt;/strong&gt; &lt;a href="//levelojs.motionmind.me"&gt;levelojs.motionmind.me&lt;/a&gt; — Dive deep into the reactive APIs, lifecycle hooks, and routing guides.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⭐ Support the Project!
&lt;/h2&gt;

&lt;p&gt;Building a framework from scratch and moving it to a complete TypeScript ecosystem takes a massive amount of love, caffeine, and code iterations. &lt;/p&gt;

&lt;p&gt;If you find &lt;strong&gt;Levelo-Js v2&lt;/strong&gt; interesting, or if you love open-source developer tooling, please consider giving the repository a &lt;strong&gt;Star (⭐) on GitHub&lt;/strong&gt;. It helps the project gain more visibility and motivates us to keep shiping awesome features! &lt;/p&gt;

&lt;p&gt;Drop a ❤️ and a 🦄 if you liked this post, and let me know your thoughts in the comments below. Happy coding! 🚀&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The New Standard for NPM Package Discovery: Deep Dive into LibPilot</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Wed, 24 Jun 2026 15:51:59 +0000</pubDate>
      <link>https://dev.to/motionmind2007/the-new-standard-for-npm-package-discovery-deep-dive-into-libpilot-4ook</link>
      <guid>https://dev.to/motionmind2007/the-new-standard-for-npm-package-discovery-deep-dive-into-libpilot-4ook</guid>
      <description>&lt;p&gt;As web developers, engineering workflows are heavily dependent on the NPM registry. However, the traditional process of searching, auditing, and integrating packages remains highly fragmented. Developers are routinely forced to hop between npmjs.com, GitHub source repositories, and external documentation tabs simply to verify bundle sizes, check dependency trees, or generate setup boilerplate.&lt;/p&gt;

&lt;p&gt;Following a strong reception on LinkedIn, X, and Facebook, the Motion Mind Team has introduced LibPilot to the dev.to community. LibPilot is not a traditional registry interface; it is an AI-powered search engine and discovery hub engineered to index, track, and analyze over 4,000,000 NPM packages in real time. &lt;/p&gt;

&lt;p&gt;Here is an architectural breakdown of how LibPilot restructures package exploration for modern developers and autonomous AI code agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  Intent-Based Discovery and Global Search Architecture
&lt;/h2&gt;

&lt;p&gt;Traditional search engines require users to input the exact name or strict keyword of a library. LibPilot introduces a dual-input architecture on its home page to eliminate this constraint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Direct Registry Querying:&lt;/strong&gt; Users can input full or partial package names into the global search bar to instantly surface clean, structured, and typed suggestions directly from the live NPM ecosystem database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual AI Recommendations:&lt;/strong&gt; For scenarios where the ideal package is unknown, developers can type out a complete description of their project architecture or system constraints (for example: "a lightweight, typed state management engine that handles server-side rendering natively"). LibPilot's internal AI agent processes the functional requirements and suggests production-ready libraries suited for that stack.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Continuous Context AI and Interactive Onboarding
&lt;/h2&gt;

&lt;p&gt;A core goal of the platform is reducing developer friction and maintaining deployment momentum. LibPilot transitions static package documentation into an interactive environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unlimited AI Chat Architecture:&lt;/strong&gt; Once a library is selected, users can initiate a continuous, context-aware AI chat directly inside the hub. This allows for immediate questions regarding framework compatibility, performance trade-offs, and custom edge cases without changing tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Generated Implementation Guides:&lt;/strong&gt; The integrated AI engine evaluates the target package to instantly compile environmental setup guidelines, configuration boilerplate, and exact terminal commands tailored to specific execution workflows.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Granular Real-Time Package Telemetry
&lt;/h2&gt;

&lt;p&gt;When auditing a specific library, LibPilot maps complete technical data points across a unified, minimalist panel. Rather than cross-referencing multiple platform registries, developers gain instant access to structural package metrics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity Verification:&lt;/strong&gt; Displays the official Package Name, Package Description, current active Version, and categorized Package Tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosystem Metrics:&lt;/strong&gt; Tracks the absolute operational footprint via Unpacked Package Size, Total Files bundled in the archive, and verified License compliance headers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Endpoints:&lt;/strong&gt; Fast-tracks source access with direct triggers to the official Package Home Page, active Git Repository, and standalone Documentation manuals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Dependency and Dev Dependency Lists:&lt;/strong&gt; Shows two clear, dedicated containers displaying the exact list of Dependencies and Dev Dependencies required by the package, complete with their semantic version codes and total package counts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainer Attribution:&lt;/strong&gt; Verifies code provenance by surfacing official Contributors/Maintainers alongside their verified contact endpoints, alongside the exact Last Update timestamp to easily spot unmaintained code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal Installation Triggers:&lt;/strong&gt; Out-of-the-box support for copying ready-to-run terminal installation strings optimized for npm, yarn, pnpm, and bun.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Built for Engineering Velocity
&lt;/h2&gt;

&lt;p&gt;LibPilot acts as a powerful web-based bridge between the massive registry registry and your local setup. It replaces cluttered configuration workflows with real-time operational metrics and deep-context automation.&lt;/p&gt;

&lt;p&gt;Explore the live engine and leverage AI insights for your next development environment directly at the official platform: &lt;a href="https://libpilot.motionmind.me" rel="noopener noreferrer"&gt;https://libpilot.motionmind.me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>ai</category>
      <category>npm</category>
    </item>
    <item>
      <title>Why Most Developers Never Finish Their Projects</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Tue, 16 Jun 2026 14:42:15 +0000</pubDate>
      <link>https://dev.to/motionmind2007/why-most-developers-never-finish-their-projects-7nn</link>
      <guid>https://dev.to/motionmind2007/why-most-developers-never-finish-their-projects-7nn</guid>
      <description>&lt;p&gt;Starting a new project feels exciting.&lt;/p&gt;

&lt;p&gt;A new idea appears, the first few lines of code are written, the design starts coming together, and everything feels possible.&lt;/p&gt;

&lt;p&gt;But after some time, many projects slowly disappear.&lt;/p&gt;

&lt;p&gt;The repository stays untouched.&lt;br&gt;
The last commit becomes weeks or months old.&lt;br&gt;
The idea that once felt amazing becomes another unfinished folder.&lt;/p&gt;

&lt;p&gt;This happens to many developers.&lt;/p&gt;

&lt;p&gt;The problem is usually not a lack of intelligence or creativity.&lt;/p&gt;

&lt;p&gt;The problem is finishing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Difference Between Starting and Building
&lt;/h2&gt;

&lt;p&gt;Starting a project is easy.&lt;/p&gt;

&lt;p&gt;Almost every developer has experienced the excitement of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a new repository&lt;/li&gt;
&lt;li&gt;Choosing a tech stack&lt;/li&gt;
&lt;li&gt;Designing the UI&lt;/li&gt;
&lt;li&gt;Writing the first components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first 10% of a project is often the most enjoyable part.&lt;/p&gt;

&lt;p&gt;But real building starts when the excitement disappears.&lt;/p&gt;

&lt;p&gt;When you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix unexpected bugs&lt;/li&gt;
&lt;li&gt;Refactor messy code&lt;/li&gt;
&lt;li&gt;Make difficult decisions&lt;/li&gt;
&lt;li&gt;Handle boring tasks&lt;/li&gt;
&lt;li&gt;Continue without motivation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where many projects stop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tutorial Knowledge Does Not Automatically Become Real Experience
&lt;/h2&gt;

&lt;p&gt;One of the biggest reasons developers don't finish projects is staying in learning mode forever.&lt;/p&gt;

&lt;p&gt;Learning is important.&lt;/p&gt;

&lt;p&gt;But there is a difference between:&lt;/p&gt;

&lt;p&gt;"I know how to build this"&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;"I actually built this."&lt;/p&gt;

&lt;p&gt;You can watch dozens of tutorials about authentication, databases, APIs, or frameworks.&lt;/p&gt;

&lt;p&gt;But the real lessons appear when you try to combine everything into a real product.&lt;/p&gt;

&lt;p&gt;A finished imperfect project teaches more than a perfect tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trap of Perfectionism
&lt;/h2&gt;

&lt;p&gt;Many developers delay releasing because they want everything to be perfect.&lt;/p&gt;

&lt;p&gt;The UI must be perfect.&lt;br&gt;
The code must be perfect.&lt;br&gt;
The architecture must be perfect.&lt;/p&gt;

&lt;p&gt;But the truth is:&lt;/p&gt;

&lt;p&gt;The first version of almost anything is not perfect.&lt;/p&gt;

&lt;p&gt;Great software is usually created through improvement.&lt;/p&gt;

&lt;p&gt;A small working version gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real feedback&lt;/li&gt;
&lt;li&gt;Real problems to solve&lt;/li&gt;
&lt;li&gt;Real users&lt;/li&gt;
&lt;li&gt;Real learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A project that exists can improve.&lt;/p&gt;

&lt;p&gt;A project that is only an idea cannot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shiny Object Syndrome
&lt;/h2&gt;

&lt;p&gt;Technology changes quickly.&lt;/p&gt;

&lt;p&gt;A developer starts building something with one stack.&lt;/p&gt;

&lt;p&gt;Then a new framework appears.&lt;/p&gt;

&lt;p&gt;A new library looks interesting.&lt;/p&gt;

&lt;p&gt;A new trend starts.&lt;/p&gt;

&lt;p&gt;Suddenly the old project feels boring.&lt;/p&gt;

&lt;p&gt;So they restart.&lt;/p&gt;

&lt;p&gt;Again and again.&lt;/p&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;p&gt;Many beginnings.&lt;br&gt;
Few endings.&lt;/p&gt;

&lt;p&gt;Learning new technology is good, but constantly switching prevents growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation Starts Projects, Discipline Finishes Them
&lt;/h2&gt;

&lt;p&gt;Motivation is powerful at the beginning.&lt;/p&gt;

&lt;p&gt;It helps you start.&lt;/p&gt;

&lt;p&gt;But motivation is temporary.&lt;/p&gt;

&lt;p&gt;Some days you will not feel inspired.&lt;br&gt;
Some days coding will feel difficult.&lt;/p&gt;

&lt;p&gt;That is normal.&lt;/p&gt;

&lt;p&gt;The developers who finish projects are not always the most motivated ones.&lt;/p&gt;

&lt;p&gt;They are the ones who continue even when the excitement is gone.&lt;/p&gt;

&lt;p&gt;Consistency beats intensity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small Projects Create Big Skills
&lt;/h2&gt;

&lt;p&gt;Many developers think every project needs to be a huge startup idea.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;A small completed project teaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to structure code&lt;/li&gt;
&lt;li&gt;How to debug&lt;/li&gt;
&lt;li&gt;How to handle mistakes&lt;/li&gt;
&lt;li&gt;How to deploy&lt;/li&gt;
&lt;li&gt;How to maintain software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finishing small things builds the ability to finish bigger things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Goal Is Not Just Writing Code
&lt;/h2&gt;

&lt;p&gt;A developer is not only someone who writes code.&lt;/p&gt;

&lt;p&gt;A developer solves problems.&lt;/p&gt;

&lt;p&gt;And solving problems requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Patience&lt;/li&gt;
&lt;li&gt;Decision making&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;li&gt;Persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hardest part of software development is often not syntax.&lt;/p&gt;

&lt;p&gt;It is staying with a problem long enough to solve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The world is not lacking ideas.&lt;/p&gt;

&lt;p&gt;Developers have thousands of ideas every day.&lt;/p&gt;

&lt;p&gt;The difference is made by the people who keep working after the excitement disappears.&lt;/p&gt;

&lt;p&gt;Start small.&lt;br&gt;
Build consistently.&lt;br&gt;
Finish what you start.&lt;/p&gt;

&lt;p&gt;Because a completed project, even an imperfect one, will always teach you more than an unfinished perfect idea.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>How I Built a Reactive State System in Pure JavaScript</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Sun, 14 Jun 2026 05:58:58 +0000</pubDate>
      <link>https://dev.to/motionmind2007/how-i-built-a-reactive-state-system-in-pure-javascript-1lj</link>
      <guid>https://dev.to/motionmind2007/how-i-built-a-reactive-state-system-in-pure-javascript-1lj</guid>
      <description>&lt;p&gt;When I started building Levelo JS, one of the most interesting challenges was creating a reactive state system.&lt;/p&gt;

&lt;p&gt;At first, I wanted something that felt similar to React. My goal was to make state access simple and intuitive, where developers could work with state values directly without extra function calls.&lt;/p&gt;

&lt;p&gt;But once I started implementing it, I quickly realized that building a reactive system is much harder than it looks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The First Idea
&lt;/h2&gt;

&lt;p&gt;My original plan was to create a getter/setter system where state values could be accessed directly, similar to how developers usually work with variables.&lt;/p&gt;

&lt;p&gt;On paper, it sounded simple.&lt;/p&gt;

&lt;p&gt;In reality, it introduced many challenges.&lt;/p&gt;

&lt;p&gt;The framework needs to know exactly when a value is being read, when it changes, and which parts of the UI depend on that value. Handling all of that correctly without adding unnecessary complexity turned out to be much more difficult than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rethinking the API
&lt;/h2&gt;

&lt;p&gt;Instead of spending weeks trying to perfect the original idea, I decided to focus on building a working MVP first.&lt;/p&gt;

&lt;p&gt;That's when I started experimenting with a function-based approach.&lt;/p&gt;

&lt;p&gt;The API eventually became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;levelojs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="c1"&gt;// UI&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;p&gt;This approach felt much simpler to implement while still providing the reactive behavior I wanted.&lt;/p&gt;

&lt;p&gt;Interestingly, this design ended up being closer to SolidJS than React.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building It
&lt;/h2&gt;

&lt;p&gt;I wasn't working completely alone.&lt;/p&gt;

&lt;p&gt;Part of the implementation was something I explored together with AI while experimenting with different ideas and approaches.&lt;/p&gt;

&lt;p&gt;The goal wasn't to copy another framework.&lt;/p&gt;

&lt;p&gt;The goal was to understand how reactivity actually works behind the scenes and then build a system that fits the design philosophy of Levelo JS.&lt;/p&gt;

&lt;p&gt;Once the function-based API was in place, many parts of the system became easier to reason about.&lt;/p&gt;

&lt;p&gt;The implementation became cleaner, debugging became simpler, and progress became much faster.&lt;/p&gt;

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

&lt;p&gt;This project taught me something important:&lt;/p&gt;

&lt;p&gt;The first idea is not always the best idea.&lt;/p&gt;

&lt;p&gt;Sometimes developers spend too much time chasing the "perfect" solution when a simpler solution can move the project forward much faster.&lt;/p&gt;

&lt;p&gt;I still find the direct getter/setter approach interesting, and I may revisit it in the future.&lt;/p&gt;

&lt;p&gt;But for an MVP, the function-based API was the right decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Building a reactive state system taught me that reactivity is not magic.&lt;/p&gt;

&lt;p&gt;Behind every simple API, there is a lot of design, experimentation, and problem-solving.&lt;/p&gt;

&lt;p&gt;Levelo JS is still evolving, and there are many things I want to improve.&lt;/p&gt;

&lt;p&gt;But creating the state system was one of the moments where I learned the most about framework development and how modern JavaScript libraries work under the hood.&lt;/p&gt;

&lt;p&gt;If you're building your own library or framework, don't be afraid to choose the simpler solution first.&lt;/p&gt;

&lt;p&gt;You can always improve it later.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What Nobody Told Me About Maintaining an Open Source Project</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Sat, 13 Jun 2026 06:37:20 +0000</pubDate>
      <link>https://dev.to/motionmind2007/what-nobody-told-me-about-maintaining-an-open-source-project-307m</link>
      <guid>https://dev.to/motionmind2007/what-nobody-told-me-about-maintaining-an-open-source-project-307m</guid>
      <description>&lt;p&gt;I am a solo learner. I started coding last year with the help of AI and sometimes without any tutorials or courses.&lt;/p&gt;

&lt;p&gt;At first, I thought this journey would be easier. But soon I realized something important — no AI or tool can fully solve the real problems I was facing as a developer.&lt;/p&gt;

&lt;p&gt;I used AI a lot. It explained things with confidence and even provided code.&lt;/p&gt;

&lt;p&gt;But when I ran that code in my terminal, many times it didn’t work.&lt;/p&gt;

&lt;p&gt;That’s when I understood something important: AI can guide, but it cannot replace understanding.&lt;/p&gt;

&lt;p&gt;After facing these issues, I changed my way of learning.&lt;/p&gt;

&lt;p&gt;Instead of blindly trusting AI, I started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finding real open-source projects
&lt;/li&gt;
&lt;li&gt;Studying how they were built
&lt;/li&gt;
&lt;li&gt;Listing important topics from those projects
&lt;/li&gt;
&lt;li&gt;Reading documentation carefully
&lt;/li&gt;
&lt;li&gt;Asking AI to explain specific lines of code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helped me understand real-world code better.&lt;/p&gt;

&lt;p&gt;From this learning journey, I realized something:&lt;/p&gt;

&lt;p&gt;I should also build my own open-source projects.&lt;/p&gt;

&lt;p&gt;At first, I believed that creating a powerful project could automatically bring attention and users.&lt;/p&gt;

&lt;p&gt;But I was wrong.&lt;/p&gt;

&lt;p&gt;I made a mistake — I was not active on any platform.&lt;/p&gt;

&lt;p&gt;I was just coding inside VS Code, without communication or sharing my work anywhere.&lt;/p&gt;

&lt;p&gt;Then I realized:&lt;/p&gt;

&lt;p&gt;Being a developer is not only about coding. Visibility and communication are also important.&lt;/p&gt;

&lt;p&gt;After that realization, I started being active on platforms like Dev.to, LinkedIn, and other developer communities.&lt;/p&gt;

&lt;p&gt;I started posting my work and sharing my progress.&lt;/p&gt;

&lt;p&gt;Even though I didn’t get many comments, I started getting reactions and engagement. That small feedback gave me motivation.&lt;/p&gt;

&lt;p&gt;From this journey, I learned something important:&lt;/p&gt;

&lt;p&gt;Open source is not only about code. It is about helping other developers, sharing knowledge, and being consistent and visible.&lt;/p&gt;

&lt;p&gt;A developer should not only code silently but also participate in the community.&lt;/p&gt;

&lt;p&gt;Now I understand that coding is only one part of being a developer. Community, communication, and consistency are equally important.&lt;/p&gt;

&lt;p&gt;And I will continue building open source projects while staying active in developer platforms.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What I Learned Building a JavaScript Framework from Scratch at 18!</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Fri, 12 Jun 2026 06:23:27 +0000</pubDate>
      <link>https://dev.to/motionmind2007/what-i-learned-building-a-javascript-framework-from-scratch-at-18-5252</link>
      <guid>https://dev.to/motionmind2007/what-i-learned-building-a-javascript-framework-from-scratch-at-18-5252</guid>
      <description>&lt;p&gt;Whenever I used JavaScript frameworks like React, Next.js, or SvelteKit to build e-commerce sites and web applications, one question always stuck in my mind: &lt;strong&gt;"How does it actually work under the hood?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During my recent Eid vacation, I decided to stop just using them and try building one myself. Here is the story of how &lt;strong&gt;Levelo JS&lt;/strong&gt; was born.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Spark of Curiosity
&lt;/h3&gt;

&lt;p&gt;I started by asking Gemini to explain the core mechanics of modern JavaScript frameworks. That is when I learned about how compilers work—specifically, how they transform JSX-like syntax into pure, optimized vanilla JavaScript DOM operations. &lt;/p&gt;

&lt;p&gt;To dig deeper, I spent days reading through the open-source compiler code of &lt;strong&gt;SolidJS&lt;/strong&gt; and &lt;strong&gt;React&lt;/strong&gt;. The fine-grained reactivity architecture of SolidJS fascinated me the most. &lt;/p&gt;

&lt;p&gt;Armed with this knowledge, I teamed up with Gemini to brainstorm and research the architecture. After intense experimentation, we successfully built &lt;strong&gt;Levelo JS&lt;/strong&gt; — a lightweight, zero-runtime, Virtual-DOM-free JavaScript framework built entirely from scratch.&lt;/p&gt;




&lt;h3&gt;
  
  
  Coding on a Mobile Phone 📱
&lt;/h3&gt;

&lt;p&gt;The journey was extra challenging and interesting because I was at my village for the holidays and didn't have access to my laptop or PC. &lt;/p&gt;

&lt;p&gt;Driven by pure passion, I coded the entire core framework (up to v1.0.4) on my &lt;strong&gt;Android phone using Termux and the Acode editor&lt;/strong&gt;. Because I had already thoroughly studied the documentation of React, SolidJS, and Svelte, I managed to build the initial core architecture in just &lt;strong&gt;15 days&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Hardest Challenge: Building a Client-Side Router
&lt;/h3&gt;

&lt;p&gt;Since Levelo JS is designed for Single Page Applications (SPA), it absolutely needed a client-side routing mechanism. &lt;/p&gt;

&lt;p&gt;Building this routing system from scratch was the hardest part of the project. It took me 2 entire days of continuous debugging just to get the basic routing features stable. While there might still be minor edge-case bugs, I am actively identifying and fixing them as the framework evolves.&lt;/p&gt;




&lt;h3&gt;
  
  
  My Biggest Takeaway
&lt;/h3&gt;

&lt;p&gt;Building Levelo JS taught me that as developers, we shouldn't just blindly memorize how to use tools like Next.js or React. We need to look deeper and understand &lt;strong&gt;how they work under the hood&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Understanding the internals makes you a better software engineer and helps you write significantly faster, more optimized code for production.&lt;/p&gt;

&lt;p&gt;I would love to get your feedback on the architecture! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com" rel="noopener noreferrer"&gt;MotionMind2007/Levelo-Js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://motionmind.me" rel="noopener noreferrer"&gt;levelojs.motionmind.me&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Building a Frontend Framework from Scratch: Introducing Levelo JS</title>
      <dc:creator>Saiful Siam</dc:creator>
      <pubDate>Thu, 11 Jun 2026 12:27:54 +0000</pubDate>
      <link>https://dev.to/motionmind2007/building-a-frontend-framework-from-scratch-introducing-levelo-js-54ci</link>
      <guid>https://dev.to/motionmind2007/building-a-frontend-framework-from-scratch-introducing-levelo-js-54ci</guid>
      <description>&lt;p&gt;As developers, we often use frameworks every day without thinking much about how they work internally.&lt;/p&gt;

&lt;p&gt;A while ago, I started exploring frontend architecture more deeply. I wanted to understand what happens behind components, state management, reactivity, and rendering systems.&lt;/p&gt;

&lt;p&gt;That curiosity eventually led me to build my own frontend framework.&lt;/p&gt;

&lt;p&gt;Today, I'm excited to share &lt;strong&gt;Levelo JS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Levelo JS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Levelo JS is a frontend framework built completely from scratch in JavaScript under the Motion Mind brand.&lt;/p&gt;

&lt;p&gt;The framework is designed around a few core ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Virtual DOM&lt;/li&gt;
&lt;li&gt;Signal-based reactivity&lt;/li&gt;
&lt;li&gt;Small bundle size&lt;/li&gt;
&lt;li&gt;SPA-focused architecture&lt;/li&gt;
&lt;li&gt;Simple developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current core package version: &lt;strong&gt;levelojs v1.2.0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ecosystem also includes a CLI tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-levelo-app my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why Build Another Framework?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal was never to create "the next React" or replace existing frameworks.&lt;/p&gt;

&lt;p&gt;The real goal was to learn by building.&lt;/p&gt;

&lt;p&gt;I wanted to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How reactivity systems work&lt;/li&gt;
&lt;li&gt;How rendering pipelines are designed&lt;/li&gt;
&lt;li&gt;How state updates affect the UI&lt;/li&gt;
&lt;li&gt;How framework architecture evolves from simple ideas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building everything from scratch taught me far more than simply reading documentation ever could.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signal-Based State Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the core concepts in Levelo JS is signal-based reactivity.&lt;/p&gt;

&lt;p&gt;A simple counter looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;levelojs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&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;h2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h2&amp;gt;&lt;/span&gt;&lt;span class="err"&gt; 
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onclick&lt;/span&gt;&lt;span class="o"&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="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Level&lt;/span&gt; &lt;span class="nx"&gt;Up&lt;/span&gt; &lt;span class="err"&gt;➔&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;             &lt;/span&gt;&lt;span class="err"&gt; 
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt; 
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The framework updates only what needs to change, without relying on a Virtual DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built Under Motion Mind&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Levelo JS is being developed under Motion Mind, an initiative focused on next-generation software and AI solutions.&lt;/p&gt;

&lt;p&gt;The vision behind Motion Mind is simple:&lt;/p&gt;

&lt;p&gt;Build useful software.&lt;br&gt;
Explore new ideas.&lt;br&gt;
Share the journey through open source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Personal Milestone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One detail that makes this project special to me is how it started.&lt;/p&gt;

&lt;p&gt;Up to version 1.0.4, Levelo JS was built entirely on an Android phone using Termux and acode.&lt;/p&gt;

&lt;p&gt;What started as experimentation on a mobile device eventually grew into a complete open-source framework with its own CLI, documentation site, and ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore Levelo JS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documentation:&lt;br&gt;
&lt;a href="https://levelojs.motionmind.me/" rel="noopener noreferrer"&gt;https://levelojs.motionmind.me/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/MotionMind2007/Levelo-Js" rel="noopener noreferrer"&gt;https://github.com/MotionMind2007/Levelo-Js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open for Collaboration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Levelo JS is open source and actively evolving.&lt;/p&gt;

&lt;p&gt;If you're interested in frontend architecture, framework design, JavaScript internals, or open-source development, I'd love to hear your thoughts and feedback.&lt;/p&gt;

&lt;p&gt;Every suggestion, discussion, and contribution helps move the project forward.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

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