<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Frontend on Simple Enough Blog</title><link>https://blog-dev.simpleenough.net/tags/frontend/</link><description>Recent content in Frontend on Simple Enough Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 16 Sep 2025 15:13:06 +0200</lastBuildDate><atom:link href="https://blog-dev.simpleenough.net/tags/frontend/index.xml" rel="self" type="application/rss+xml"/><item><title>CSS Color Palette: How to Choose and Combine Colors Effectively</title><link>https://blog-dev.simpleenough.net/blog/colorpalette/</link><pubDate>Tue, 16 Sep 2025 15:13:06 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/colorpalette/</guid><description>&lt;h2 id="i-why-a-well-thought-css-color-palette-matters" class="heading">I. Why a Well-Thought CSS &lt;strong>Color Palette&lt;/strong> Matters&lt;a href="#i-why-a-well-thought-css-color-palette-matters" aria-labelledby="i-why-a-well-thought-css-color-palette-matters">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>A well-designed palette ensures &lt;strong>visual consistency&lt;/strong>, reinforces &lt;strong>brand identity&lt;/strong>, and provides a &lt;strong>smooth user experience&lt;/strong>. It simplifies code maintenance, avoids redundant colors, and allows for &lt;strong>easy theme adaptation&lt;/strong> (light/dark). Following best practices also enhances &lt;strong>accessibility&lt;/strong>: sufficient contrast, and visual cues beyond just color.&lt;/p>
&lt;hr>




&lt;h2 id="ii-understanding-css-color-formats-hex-rgb-hsl-keywords" class="heading">II. Understanding CSS &lt;strong>Color Formats&lt;/strong> (hex, RGB, HSL, keywords)&lt;a href="#ii-understanding-css-color-formats-hex-rgb-hsl-keywords" aria-labelledby="ii-understanding-css-color-formats-hex-rgb-hsl-keywords">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>CSS offers several formats to define colors:&lt;/p></description></item><item><title>Organizing Your Frontend Project: Clean and Simple Folder Structure</title><link>https://blog-dev.simpleenough.net/blog/organization_frontend/</link><pubDate>Fri, 05 Sep 2025 12:09:45 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/organization_frontend/</guid><description>&lt;h2 id="i-why-organize-your-frontend-project" class="heading">I. Why Organize Your Frontend Project?&lt;a href="#i-why-organize-your-frontend-project" aria-labelledby="i-why-organize-your-frontend-project">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>When you&amp;rsquo;re starting with web development, it&amp;rsquo;s common to place all your files in one folder. However, &lt;strong>good organization&lt;/strong> quickly becomes essential as the project grows, whether for:&lt;/p>
&lt;ul>
&lt;li>Navigating your codebase easily.&lt;/li>
&lt;li>Collaborating effectively with other developers.&lt;/li>
&lt;li>Making maintenance and updates easier.&lt;/li>
&lt;li>Saving time in the long run.&lt;/li>
&lt;/ul>
&lt;hr>




&lt;h2 id="ii-recommended-structure-for-a-simple-project" class="heading">II. Recommended Structure for a Simple Project&lt;a href="#ii-recommended-structure-for-a-simple-project" aria-labelledby="ii-recommended-structure-for-a-simple-project">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Here’s a classic, clean structure for an HTML/CSS/JS project without a framework:&lt;/p></description></item><item><title>Understanding the CSS Box Model</title><link>https://blog-dev.simpleenough.net/blog/boxmodel/</link><pubDate>Mon, 04 Aug 2025 16:09:45 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/boxmodel/</guid><description>&lt;h2 id="i-what-is-the-css-box-model" class="heading">I. What is the CSS Box Model?&lt;a href="#i-what-is-the-css-box-model" aria-labelledby="i-what-is-the-css-box-model">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>In CSS, &lt;strong>every HTML element is treated as a rectangular box&lt;/strong>. This is called the &lt;strong>box model&lt;/strong>.&lt;/p>
&lt;p>The box model defines &lt;strong>how an element&amp;rsquo;s total size is calculated&lt;/strong>, and how it interacts with surrounding elements.&lt;/p>
&lt;p>An HTML element consists of &lt;strong>4 main areas&lt;/strong>:&lt;/p>
&lt;div class="mb-3 syntax-highlight">&lt;pre tabindex="0">&lt;code>+-------------------------------+
| margin (outer) |
| +-------------------------+ |
| | border (border) | |
| | +-------------------+ | |
| | | padding (space) | | |
| | | +---------------+ | | |
| | | | content | | | |
| | | +---------------+ | | |
| | +-------------------+ | |
| +-------------------------+ |
+-------------------------------+&lt;/code>&lt;/pre>&lt;/div>&lt;hr>




&lt;h2 id="ii-the-4-parts-of-the-box-model" class="heading">II. The 4 Parts of the Box Model&lt;a href="#ii-the-4-parts-of-the-box-model" aria-labelledby="ii-the-4-parts-of-the-box-model">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>




&lt;h3 id="1-content" class="heading">1. &lt;code>content&lt;/code>&lt;a href="#1-content" aria-labelledby="1-content">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h3>
&lt;p>The &lt;strong>actual content&lt;/strong> of the element (text, image, button…).&lt;/p></description></item><item><title>Responsive vs Adaptive: Two Strategies, One Common Goal</title><link>https://blog-dev.simpleenough.net/blog/responsivevsadaptative/</link><pubDate>Mon, 28 Jul 2025 12:14:54 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/responsivevsadaptative/</guid><description>&lt;h2 id="i-introduction" class="heading">I. Introduction&lt;a href="#i-introduction" aria-labelledby="i-introduction">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>&lt;strong>Responsive design&lt;/strong> and &lt;strong>adaptive design&lt;/strong> are two widely used approaches to creating web interfaces that are accessible across a variety of devices. In a world where screen size diversity — from smartphones to 4K monitors — is the norm, understanding the differences between these strategies is essential for any frontend developer or designer. This article offers a clear, comparative, and well-documented overview of both methodologies, including concrete use cases and practical recommendations.&lt;/p></description></item><item><title>Optimizing Flutter Performance: build(), keys, and const Widgets</title><link>https://blog-dev.simpleenough.net/blog/optimisationflutter/</link><pubDate>Tue, 15 Jul 2025 09:24:42 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/optimisationflutter/</guid><description>&lt;p>This article proposes performance improvements by focusing on three fundamental aspects:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The build() cycle&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Keys&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Const widgets&lt;/strong>&lt;/li>
&lt;/ul>
&lt;hr>




&lt;h2 id="i-the-build-cycle-understanding-to-optimize" class="heading">I. The build() cycle: understanding to optimize&lt;a href="#i-the-build-cycle-understanding-to-optimize" aria-labelledby="i-the-build-cycle-understanding-to-optimize">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>The &lt;strong>build()&lt;/strong> process is at the core of rendering in Flutter. When a state changes or a widget is rebuilt, the &lt;strong>build()&lt;/strong> method is called. Mismanaging this method can cause significant slowdowns.&lt;/p>




&lt;h3 id="a-when-is-build-triggered" class="heading">A. When is build() triggered?&lt;a href="#a-when-is-build-triggered" aria-labelledby="a-when-is-build-triggered">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>During the first widget creation.&lt;/li>
&lt;li>When calling &lt;strong>setState()&lt;/strong>.&lt;/li>
&lt;li>When a parent widget is rebuilt.&lt;/li>
&lt;/ol>




&lt;h3 id="b-techniques-to-reduce-the-build-impact" class="heading">B. Techniques to reduce the build() impact&lt;a href="#b-techniques-to-reduce-the-build-impact" aria-labelledby="b-techniques-to-reduce-the-build-impact">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Use const in the constructor&lt;/strong>: Creates immutable instances.&lt;/li>
&lt;li>&lt;strong>Break down the build&lt;/strong>: Split the UI into subcomponents to reduce the impact zone.&lt;/li>
&lt;li>&lt;strong>Avoid heavy calculations in build()&lt;/strong>: Delegate tasks to pre-computed functions or separate methods.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Example: Optimization with subcomponents&lt;/strong>&lt;/p></description></item><item><title>Flutter &amp; Redux: A Well-Organized Recipe with Dispatch</title><link>https://blog-dev.simpleenough.net/blog/dispatch/</link><pubDate>Sun, 22 Jun 2025 19:38:55 +0100</pubDate><guid>https://blog-dev.simpleenough.net/blog/dispatch/</guid><description>&lt;h2 id="i-introduction-to-redux-in-flutter" class="heading">I. Introduction to Redux in Flutter&lt;a href="#i-introduction-to-redux-in-flutter" aria-labelledby="i-introduction-to-redux-in-flutter">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Inspired by the unidirectional data flow model, Redux allows you to centralize the application&amp;rsquo;s state and modify it through clear, predictable, and testable actions.&lt;/p>
&lt;p>The core of Redux is based on three concepts:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Store&lt;/strong>: the global state.&lt;/li>
&lt;li>&lt;strong>Action&lt;/strong>: an event describing a change.&lt;/li>
&lt;li>&lt;strong>Reducer&lt;/strong>: a function that transforms the state based on the action.&lt;/li>
&lt;/ul>
&lt;p>The goal of this article is to understand &lt;strong>how to use &lt;code>dispatch&lt;/code> with Redux in Flutter&lt;/strong>, with a simple, educational, and rigorous approach.&lt;/p></description></item><item><title>Flutter Hot Reload: Why Is It So Fast?</title><link>https://blog-dev.simpleenough.net/blog/hotreload/</link><pubDate>Mon, 19 May 2025 13:45:30 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/hotreload/</guid><description>&lt;h2 id="i-what-is-hot-reload-in-flutter" class="heading">I. What Is Hot Reload in Flutter?&lt;a href="#i-what-is-hot-reload-in-flutter" aria-labelledby="i-what-is-hot-reload-in-flutter">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>&lt;strong>Hot reload&lt;/strong> is a Flutter feature that allows developers to quickly reload modified code in a running app without a full restart. This operation retains the current app state, unlike a traditional restart.&lt;/p>
&lt;p>&lt;strong>Key benefits:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Saves time when developing UIs.&lt;/li>
&lt;li>Maintains state: ideal for testing changes without re-navigating.&lt;/li>
&lt;li>Shorter development cycles.&lt;/li>
&lt;/ul>
&lt;p>Flutter supports hot reload thanks to the Dart engine architecture, which allows &lt;strong>dynamic code injection&lt;/strong> into a running application.&lt;/p></description></item><item><title>Flutter for True Beginners: What It Is, What It’s For, and How to Try It</title><link>https://blog-dev.simpleenough.net/blog/flutterstart/</link><pubDate>Mon, 12 May 2025 10:10:48 +0200</pubDate><guid>https://blog-dev.simpleenough.net/blog/flutterstart/</guid><description>&lt;h2 id="i-what-is-flutter" class="heading">I. What is Flutter?&lt;a href="#i-what-is-flutter" aria-labelledby="i-what-is-flutter">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Flutter is an &lt;strong>open-source framework&lt;/strong> developed by Google, designed to build &lt;strong>native user interfaces&lt;/strong> for &lt;strong>Android&lt;/strong>, &lt;strong>iOS&lt;/strong>, &lt;strong>Web&lt;/strong>, and &lt;strong>desktop&lt;/strong> from a &lt;strong>single codebase&lt;/strong>. It uses the &lt;strong>Dart&lt;/strong> language and allows developers to build smooth, high-performance, and visually appealing apps.&lt;/p>
&lt;p>Flutter stands out thanks to its integrated rendering engine and ability to display animations at 60 fps or higher. It doesn&amp;rsquo;t rely on native platform UI components, which ensures &lt;strong>visual consistency&lt;/strong> across platforms.&lt;/p></description></item></channel></rss>