<?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: Moataz Aldawood</title>
    <description>The latest articles on DEV Community by Moataz Aldawood (@mtz1406).</description>
    <link>https://dev.to/mtz1406</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%2F4063155%2F0108604a-c700-4e61-a0ae-e5a94229263c.png</url>
      <title>DEV Community: Moataz Aldawood</title>
      <link>https://dev.to/mtz1406</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mtz1406"/>
    <language>en</language>
    <item>
      <title>This tool for all HTML template creators</title>
      <dc:creator>Moataz Aldawood</dc:creator>
      <pubDate>Wed, 05 Aug 2026 16:14:57 +0000</pubDate>
      <link>https://dev.to/mtz1406/this-tool-for-all-html-template-creators-28lp</link>
      <guid>https://dev.to/mtz1406/this-tool-for-all-html-template-creators-28lp</guid>
      <description>&lt;p&gt;Hi,&lt;br&gt;
I would introduce this tool for you. It is a brilliant and simple tool to create reusable Component/ Layouts / Page templates with Zero Dependencies. Use only HTML! and No server!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://moataz-aldawood.github.io/andalina/documentation.html" rel="noopener noreferrer"&gt;an-dalina&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simple Example:&lt;br&gt;
Here we defined a USER-CARD component which receives 2 attributes: username, and role.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;an-component-def&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;an-attributes&amp;gt;&lt;/span&gt;
        &lt;span class="c"&gt;&amp;lt;!-- define components attributes that will be passed from the caller --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;an-attribute&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"username"&lt;/span&gt; &lt;span class="na"&gt;mandatory=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;an-attribute&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"role"&lt;/span&gt; &lt;span class="na"&gt;default-value=&lt;/span&gt;&lt;span class="s"&gt;"Member"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/an-attributes&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;an-body&amp;gt;&lt;/span&gt;
        &lt;span class="c"&gt;&amp;lt;!-- defining component code structure --&amp;gt;&lt;/span&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;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;{{username}}&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Role: {{role}}&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/an-body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/an-component-def&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;calling the component and passing attributes values:&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="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"andalina.js"&lt;/span&gt; &lt;span class="na"&gt;defer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- call a component using src attribute --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;an-component&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"user-card.html"&lt;/span&gt; &lt;span class="na"&gt;username=&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"Admin"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- call a component and use default value of role --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;an-component&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"user-card.html"&lt;/span&gt; &lt;span class="na"&gt;username=&lt;/span&gt;&lt;span class="s"&gt;"Bob"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will be rendered in client side as:&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="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"andalina.js"&lt;/span&gt; &lt;span class="na"&gt;defer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&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;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Alice&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Role: Admin&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&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;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Bob&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Role: Member&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Andalina provide 6 tags only. with them you can do everything without repeating your codes.&lt;/p&gt;

&lt;p&gt;the tags are:&lt;br&gt;
an-include: use it to include and inject any part of code. almost, use it for include list of CSS and JS files inside header.&lt;br&gt;
an-component: use it to define component and reuse it anywhere.&lt;br&gt;
an-layout: use it to define layout and reuse it anywhere&lt;br&gt;
an-template: use it to render a predefined tempalte.&lt;/p&gt;

&lt;p&gt;an-repeat: use it to repeat part of your code X times.&lt;br&gt;
an-code: use it to inject Java, C#, Json, XML,.... or any code from external file. this help to keep your page clean. &lt;/p&gt;

&lt;p&gt;Try it and let me know your feedback.&lt;br&gt;
&lt;a href="https://moataz-aldawood.github.io/andalina/documentation.html" rel="noopener noreferrer"&gt;an-dalina&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>modeling</category>
      <category>jsf</category>
    </item>
    <item>
      <title>Bridging the FE/BE Divide: Why I Built a Zero-Dependency Component Engine for Vanilla HTML</title>
      <dc:creator>Moataz Aldawood</dc:creator>
      <pubDate>Tue, 04 Aug 2026 21:54:41 +0000</pubDate>
      <link>https://dev.to/mtz1406/bridging-the-febe-divide-why-i-built-a-zero-dependency-component-engine-for-vanilla-html-3h8h</link>
      <guid>https://dev.to/mtz1406/bridging-the-febe-divide-why-i-built-a-zero-dependency-component-engine-for-vanilla-html-3h8h</guid>
      <description>&lt;p&gt;If you’ve ever worked on a team with a strict separation between Front-End and Back-End developers, you know the pain.&lt;/p&gt;

&lt;p&gt;The FE team builds and delivers pristine, raw HTML. Then, it lands on the BE team's desk. Suddenly, the back-end developers have to rewrite, restructure, or "clean up" the markup just to wrap it in server-side rendering logic—whether that is JSF, ASP, Laravel, PHP, Django, JSP, Thymeleaf, Blade, or Jinja2.&lt;/p&gt;

&lt;p&gt;The result? Massive misalignment, friction, and wasted development cycles during handoff.&lt;/p&gt;

&lt;p&gt;The Problem: The Markup Translation Tax&lt;br&gt;
Why does this happen? Because traditional component frameworks (React, Vue, Svelte) require a heavy Node.js toolchain, build steps, and complex bundling. If a backend-heavy stack isn't running a full Node ecosystem, integrating modern component architectures becomes an uphill battle.&lt;/p&gt;

&lt;p&gt;As a result, teams fall back on copy-pasting raw HTML templates, leading to out-of-sync codebases where the front-end design and back-end logic drift apart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution: Enter Andalina&lt;/strong&gt;&lt;br&gt;
To solve this misalignment, I wanted something lightweight that bridges the gap without forcing a massive infrastructure shift. So, I built Andalina (an-dalina)—a zero-dependency, client-side template engine that brings component architecture straight to vanilla HTML.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Node.js required.&lt;/li&gt;
&lt;li&gt;No Webpack or complex bundlers.&lt;/li&gt;
&lt;li&gt;No server-side rendering setup needed to preview.&lt;/li&gt;
&lt;li&gt;Built entirely on Standard HTML/XHTML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;br&gt;
With Andalina, the FE team delivers structured, modular components that cleanly map to server-side component boundaries. Because it relies on standard HTML syntax, the BE team can easily ingest and integrate these templates directly into their existing server-side architecture without rewriting a single line of markup.&lt;/p&gt;

&lt;p&gt;Best of all? It has only 6 tags to learn, making the learning curve flat for anyone on the team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try It Out &amp;amp; Let's Connect!&lt;/strong&gt;&lt;br&gt;
I built Andalina to help front-end and back-end teams work closer together and actually enjoy the handoff process.&lt;/p&gt;

&lt;p&gt;You can check out the documentation and try it out here:&lt;br&gt;
👉 &lt;a href="https://moataz-aldawood.github.io/andalina/documentation.html" rel="noopener noreferrer"&gt;Andalina Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would love to hear your thoughts. All kinds of feedback are welcome—ideas, enhancements, edge cases, or issues. Let’s make FE and BE developers friends again! :)&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>frontendchallenge</category>
    </item>
  </channel>
</rss>
