<?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: cengiz ilhan</title>
    <description>The latest articles on DEV Community by cengiz ilhan (@sawacrow).</description>
    <link>https://dev.to/sawacrow</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F555004%2Faff79ff0-306d-418b-9ea5-5ef39466c44f.jpeg</url>
      <title>DEV Community: cengiz ilhan</title>
      <link>https://dev.to/sawacrow</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sawacrow"/>
    <language>en</language>
    <item>
      <title>Senior Frontend Roadmap: Beyond Frameworks</title>
      <dc:creator>cengiz ilhan</dc:creator>
      <pubDate>Sat, 07 Mar 2026 19:39:29 +0000</pubDate>
      <link>https://dev.to/sawacrow/senior-frontend-roadmap-beyond-frameworks-h6c</link>
      <guid>https://dev.to/sawacrow/senior-frontend-roadmap-beyond-frameworks-h6c</guid>
      <description>&lt;h1&gt;
  
  
  Senior Frontend Roadmap: Beyond Frameworks
&lt;/h1&gt;

&lt;p&gt;I recently created a &lt;strong&gt;Senior Frontend Roadmap&lt;/strong&gt; and wanted to share it here.&lt;/p&gt;

&lt;p&gt;Most frontend roadmaps focus on frameworks and tools.&lt;br&gt;&lt;br&gt;
This one tries to focus more on &lt;strong&gt;real-world frontend work&lt;/strong&gt;: domains, architecture, engineering practices, and the impact of technical decisions.&lt;/p&gt;

&lt;p&gt;The roadmap is based on experience from &lt;strong&gt;long-lived products and team work&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
It is not meant to be a strict guide, but rather a &lt;strong&gt;reference for discussion&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  View the Roadmap
&lt;/h2&gt;

&lt;p&gt;You can view the interactive version on roadmap.sh:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://roadmap.sh/r/senior-frontend-developer-v0r9c" rel="noopener noreferrer"&gt;https://roadmap.sh/r/senior-frontend-developer-v0r9c&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The GitHub repository is open for feedback and improvements:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cengizilhan/senior-frontend-roadmap" rel="noopener noreferrer"&gt;https://github.com/cengizilhan/senior-frontend-roadmap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments, suggestions, and different perspectives are welcome.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>career</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Component-Based MVC</title>
      <dc:creator>cengiz ilhan</dc:creator>
      <pubDate>Sat, 07 Mar 2026 19:31:37 +0000</pubDate>
      <link>https://dev.to/sawacrow/component-based-mvc-5f11</link>
      <guid>https://dev.to/sawacrow/component-based-mvc-5f11</guid>
      <description>&lt;h1&gt;
  
  
  Modern component architecture for server-side MVC applications
&lt;/h1&gt;

&lt;p&gt;In the modern frontend world, large bundle files are gradually being replaced by component-based architectures.&lt;/p&gt;

&lt;p&gt;Thanks to modern frontend frameworks like &lt;strong&gt;React&lt;/strong&gt; and &lt;strong&gt;Vue&lt;/strong&gt;, the following approach has become common:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI is built from components
&lt;/li&gt;
&lt;li&gt;each component owns its own code
&lt;/li&gt;
&lt;li&gt;only the necessary code is loaded
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, many server-side MVC applications still follow the older approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;site&lt;/span&gt;&lt;span class="nc"&gt;.css&lt;/span&gt;
&lt;span class="nt"&gt;bundle&lt;/span&gt;&lt;span class="nc"&gt;.js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Over time these files grow larger and create several problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unused CSS
&lt;/li&gt;
&lt;li&gt;unnecessary JavaScript
&lt;/li&gt;
&lt;li&gt;hard-to-debug global code
&lt;/li&gt;
&lt;li&gt;risky refactoring
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, I will describe a simple approach to solve this problem in MVC applications:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component-Based MVC&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The Idea
&lt;/h1&gt;

&lt;p&gt;In Component-Based MVC, a page is composed of a layout and UI components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Page = Layout + Components
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each component contains its own &lt;strong&gt;HTML, CSS, and JavaScript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And the most important rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If a component is not rendered, its assets are not loaded.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This prevents unnecessary CSS and JavaScript from being loaded.&lt;/p&gt;

&lt;p&gt;If there is no HTML, there is no need for its CSS or JS.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Simple Component Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@{
    Html.RegisterStyle("/styles/components/gallery/gallery.css");
    Html.RegisterScript("/scripts/gallery.js", ScriptLocation.Footer);
}

&amp;lt;div class="gallery"&amp;gt;
    &amp;lt;h2&amp;gt;Gallery&amp;lt;/h2&amp;gt;

    &amp;lt;div class="gallery-images"&amp;gt;
        &amp;lt;img src="/images/gallery1.jpg"&amp;gt;
        &amp;lt;img src="/images/gallery2.jpg"&amp;gt;
        &amp;lt;img src="/images/gallery3.jpg"&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The component registers its own assets.&lt;/p&gt;




&lt;h1&gt;
  
  
  Page Usage
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@{
    Html.RegisterStyle("/styles/pages/home.css");
}

&amp;lt;h1&amp;gt;Homepage&amp;lt;/h1&amp;gt;

@Html.Partial("~/Components/Gallery/Gallery.cshtml")
@Html.Partial("~/Components/Gallery/Gallery.cshtml")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even if the gallery component is called twice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gallery.css → loaded once
gallery.js → loaded once
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  SCSS Structure
&lt;/h1&gt;

&lt;p&gt;Styles can be organized with a simple folder structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/styles
  /components
    /gallery
      gallery.scss
  /pages
    home.scss
    article.scss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;components/&lt;/strong&gt; → reusable UI elements
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pages/&lt;/strong&gt; → page-specific styles
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Layout
&lt;/h1&gt;

&lt;p&gt;Assets are rendered in the layout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    @Html.RenderRegisteredStyles()
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

@RenderBody()

    @Html.RenderRegisteredScripts(ScriptLocation.Footer)

&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Rendered Output
&lt;/h1&gt;

&lt;p&gt;The final HTML output 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;html&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;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/styles/pages/home.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/styles/components/gallery/gallery.css"&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;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;"gallery"&lt;/span&gt;&lt;span class="nt"&gt;&amp;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;"gallery"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&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;"/scripts/gallery.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&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;Even if the component is rendered multiple times, its assets are loaded &lt;strong&gt;only once&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why It Matters
&lt;/h1&gt;

&lt;p&gt;Modern frontend architectures (including React) are built around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;component architecture
&lt;/li&gt;
&lt;li&gt;code splitting
&lt;/li&gt;
&lt;li&gt;on-demand assets
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Component-Based MVC brings the same idea to the &lt;strong&gt;server-side rendering world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;MVC does not change.&lt;/p&gt;

&lt;p&gt;Only the &lt;strong&gt;View layer becomes modernized&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;Component-Based MVC is based on a few simple principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI is built from components
&lt;/li&gt;
&lt;li&gt;components own their assets
&lt;/li&gt;
&lt;li&gt;assets are loaded only when needed
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mvc</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
