<?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: Arvin Prince</title>
    <description>The latest articles on DEV Community by Arvin Prince (@prince_4rvin).</description>
    <link>https://dev.to/prince_4rvin</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%2F3969971%2F14dd4141-304f-465b-880e-6e62346c2c2c.JPG</url>
      <title>DEV Community: Arvin Prince</title>
      <link>https://dev.to/prince_4rvin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prince_4rvin"/>
    <language>en</language>
    <item>
      <title>I built 10 button Web Components in pure Vanilla JS — Wave 2 of Aetheric UI published: true</title>
      <dc:creator>Arvin Prince</dc:creator>
      <pubDate>Tue, 16 Jun 2026 18:37:11 +0000</pubDate>
      <link>https://dev.to/prince_4rvin/i-built-10-button-web-components-in-pure-vanilla-js-wave-2-of-aetheric-uipublished-true-4g6e</link>
      <guid>https://dev.to/prince_4rvin/i-built-10-button-web-components-in-pure-vanilla-js-wave-2-of-aetheric-uipublished-true-4g6e</guid>
      <description>&lt;h2&gt;
  
  
  The problem with modern UI components
&lt;/h2&gt;

&lt;p&gt;Most UI component libraries come with a cost nobody talks about upfront.&lt;/p&gt;

&lt;p&gt;You install one button. You get React as a peer dependency. You get a build pipeline. You get 400MB of node_modules. You get a bundler config. You get version conflicts with whatever framework your project is already using.&lt;/p&gt;

&lt;p&gt;For a button.&lt;/p&gt;

&lt;p&gt;That never sat right with me. So I built Aetheric UI — a component library where every component is a pure Vanilla JS Web Component. Shadow DOM isolated. Zero dependencies. No React. No build step. Just drop in a tag and it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wave 2 is live
&lt;/h2&gt;

&lt;p&gt;Wave 2 ships 10 button components, each hand-coded from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Icon Button&lt;/strong&gt; — A dark neumorphic circle button with smooth press feedback. Works great for social links, actions, toolbars.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Soft Button&lt;/strong&gt; — A warm pastel surface button with an icon accent. Clean, friendly, tactile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round Button&lt;/strong&gt; — A light neumorphic round button. Minimal, satisfying press state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Press Button&lt;/strong&gt; — A neobrutalist button with a bold physical push-down effect. No animations — just weight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pill CTA Button&lt;/strong&gt; — A dark pill-shaped CTA with arrow accent and hover animation. Built for conversion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neon Button&lt;/strong&gt; — A dark button with a glowing border and hover pulse. Subtle enough to not look cheap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neobrut Button&lt;/strong&gt; — A neobrutalist pill with a bold border and sliding arrow. Clean and sharp.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keyboard Button&lt;/strong&gt; — A tactile keyboard-style button with a physical press animation and glow effect. The most satisfying one to click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frosted Button&lt;/strong&gt; — A frosted glass search-style button with a smooth dark surface. Great for nav and search UIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware Button&lt;/strong&gt; — An unlock-style hardware button with neumorphic press and ambient glow. The most unique one in the pack.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Every component uses the Web Components API — specifically &lt;code&gt;customElements.define&lt;/code&gt; and &lt;code&gt;attachShadow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Shadow DOM means the component's styles are completely isolated from the rest of your page. No class name collisions. No CSS leaking in or out. The component brings its own styles and they stay contained.&lt;/p&gt;

&lt;p&gt;Usage looks like this:&lt;br&gt;
&lt;/p&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;ae-keyboard-button&lt;/span&gt; &lt;span class="na"&gt;label=&lt;/span&gt;&lt;span class="s"&gt;"Command"&lt;/span&gt; &lt;span class="na"&gt;icon=&lt;/span&gt;&lt;span class="s"&gt;"⌘"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/ae-keyboard-button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No imports. No npm install. No bundler. Just a script tag and a custom element.&lt;/p&gt;

&lt;p&gt;Every shadow, every depth effect, every press animation is hand-coded — no UI libraries, no shortcuts. Neumorphic shadows, inset box shadows, CSS transitions, ambient glows — all written directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live demo
&lt;/h2&gt;

&lt;p&gt;See all 10 components running live here: [&lt;a href="https://deusexspiravit.github.io/aetheric-ui/" rel="noopener noreferrer"&gt;https://deusexspiravit.github.io/aetheric-ui/&lt;/a&gt;]&lt;/p&gt;

&lt;h2&gt;
  
  
  Get them
&lt;/h2&gt;

&lt;p&gt;Individual components are $9 each. The full Wave 2 Button Pack — all 10 — is $49.&lt;/p&gt;

&lt;p&gt;aethericlabs.lemonsqueezy.com&lt;/p&gt;

&lt;p&gt;Wave 3 is already in progress. More coming every Friday.&lt;/p&gt;

</description>
      <category>vanillajs</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>uidesign</category>
    </item>
    <item>
      <title>I built a hardware-inspired UI component library in pure Vanilla JS — here's how</title>
      <dc:creator>Arvin Prince</dc:creator>
      <pubDate>Mon, 08 Jun 2026 23:24:30 +0000</pubDate>
      <link>https://dev.to/prince_4rvin/i-built-a-hardware-inspired-ui-component-library-in-pure-vanilla-js-heres-how-2hcn</link>
      <guid>https://dev.to/prince_4rvin/i-built-a-hardware-inspired-ui-component-library-in-pure-vanilla-js-heres-how-2hcn</guid>
      <description>&lt;p&gt;Most UI components feel like UI components.&lt;/p&gt;

&lt;p&gt;You click a toggle and it moves. Fine. It works. But it doesn't &lt;em&gt;feel&lt;/em&gt; like anything.&lt;/p&gt;

&lt;p&gt;I wanted to change that.&lt;/p&gt;




&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;I've always been drawn to physical interfaces — the satisfying click of a mechanical switch, the weight of a hardware knob, the way a button depresses when you press it.&lt;/p&gt;

&lt;p&gt;Web UI almost never captures that. Everything is flat, instant, weightless.&lt;/p&gt;

&lt;p&gt;So I started building components that feel like they exist in the real world. Not skeuomorphic in the old iOS 6 sense — but tactile. Depth. Shadow. Resistance.&lt;/p&gt;

&lt;p&gt;That became &lt;strong&gt;Aetheric UI&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Vanilla JS
&lt;/h2&gt;

&lt;p&gt;No React. No Tailwind. No build step.&lt;/p&gt;

&lt;p&gt;Not because frameworks are bad — they're great for what they do. But a toggle component shouldn't require a package.json. It should be a file you drop in and it works.&lt;/p&gt;

&lt;p&gt;Every component in Aetheric UI is a single file. You copy it in, it runs. That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wave 1: Toggles and a Button
&lt;/h2&gt;

&lt;p&gt;The first drop is five components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Depression Toggle&lt;/strong&gt; — a circular switch that sits pressed into the surface. When it's on, a small amber dot glows at the center. The whole thing feels sunken.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Half-Pill Toggle&lt;/strong&gt; — a pill-shaped switch split into two halves. One side is always recessed, the other raised. It mimics the feel of a physical rocker switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sliding Toggle&lt;/strong&gt; — the most dramatic of the three. An ambient amber glow bleeds out from the left when it's active. The knob itself casts a hard shadow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Toggle Pack&lt;/strong&gt; — all three together, bundled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware Button&lt;/strong&gt; — a pill-shaped container with a pressable button on the right. Press it and it fires its action. The label is fully customizable — the demo shows a text change on press, but what it does is entirely up to you.&lt;/p&gt;




&lt;h2&gt;
  
  
  What makes them different
&lt;/h2&gt;

&lt;p&gt;The depth is all CSS — layered box shadows, carefully tuned inset values, subtle gradients. No images, no SVGs, no canvas.&lt;/p&gt;

&lt;p&gt;The interactions are pure JS state. Toggle on, toggle off. The animations are CSS transitions triggered by a class swap.&lt;/p&gt;

&lt;p&gt;Every component is under 10KB. Most are closer to 4KB.&lt;/p&gt;




&lt;h2&gt;
  
  
  This is just Wave 1
&lt;/h2&gt;

&lt;p&gt;Navbars are next. Then input fields. Then cards.&lt;/p&gt;

&lt;p&gt;Each wave drops on Fridays.&lt;/p&gt;

&lt;p&gt;If you want to follow along, I'm building this in public on X and LinkedIn as &lt;strong&gt;Aetheric Labs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And if you want the components themselves — they're available now at &lt;strong&gt;&lt;a href="https://aethericlabs.lemonsqueezy.com" rel="noopener noreferrer"&gt;aethericlabs.lemonsqueezy.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with zero dependencies. Designed to feel real.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>css</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Why I built a framework-free e-commerce boilerplate in 2026</title>
      <dc:creator>Arvin Prince</dc:creator>
      <pubDate>Fri, 05 Jun 2026 14:18:46 +0000</pubDate>
      <link>https://dev.to/prince_4rvin/why-i-built-a-framework-free-e-commerce-boilerplate-in-2026-2f0n</link>
      <guid>https://dev.to/prince_4rvin/why-i-built-a-framework-free-e-commerce-boilerplate-in-2026-2f0n</guid>
      <description>&lt;p&gt;Every e-commerce starter I found came with the same problem.&lt;br&gt;
400MB of node_modules before I wrote a single line. Build pipelines to configure. Framework versions to manage. Hydration bugs to debug.&lt;br&gt;
I just wanted to ship a clean storefront fast.&lt;br&gt;
So I built one without any of it.&lt;br&gt;
What I built&lt;br&gt;
Aetheric Food Pantry Boilerplate is a production-ready headless e-commerce starter kit built with:&lt;/p&gt;

&lt;p&gt;Pure Vanilla HTML/CSS/JS — no build step, no bundler, sub-second load times&lt;br&gt;
Python backend — clean, predictable, no framework overhead&lt;br&gt;
Headless Shopify Storefront API — full product sync, cart, and checkout&lt;br&gt;
Context-aware AI shopping assistant — built in, not bolted on&lt;/p&gt;

&lt;p&gt;Zero npm dependencies in production. Drops into any stack.&lt;br&gt;
Why Vanilla JS in 2026&lt;br&gt;
The web platform is genuinely powerful now. CSS Grid, Custom Properties, Fetch API, Web Components — you don't need React to build something fast and clean anymore.&lt;br&gt;
For a food and grocery storefront specifically, the performance difference is real. Vanilla JS loads instantly. Customers don't wait.&lt;br&gt;
The AI assistant&lt;br&gt;
The shopping assistant uses retrieval over the product catalog to answer real questions — not just a chatbot wrapper. Ask it "what's gluten free" or "show me under $5" and it actually responds intelligently.&lt;br&gt;
Where to find it&lt;br&gt;
GitHub: &lt;a href="https://github.com/DeusExspiravit/aetheric-food-pantry-boilerplate" rel="noopener noreferrer"&gt;https://github.com/DeusExspiravit/aetheric-food-pantry-boilerplate&lt;/a&gt;&lt;br&gt;
Get it: [&lt;a href="https://aethericlabs.lemonsqueezy.com/checkout/buy/125b4c80-01ad-4bef-9c88-aba27a91ad31" rel="noopener noreferrer"&gt;https://aethericlabs.lemonsqueezy.com/checkout/buy/125b4c80-01ad-4bef-9c88-aba27a91ad31&lt;/a&gt;]&lt;br&gt;
Would love feedback from the dev.to community — especially on the no-framework approach. Is this something you'd use in a client project?&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>python</category>
      <category>webdev</category>
      <category>shopify</category>
    </item>
  </channel>
</rss>
