<?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>Forem: kamran</title>
    <description>The latest articles on Forem by kamran (@shaikhkamran).</description>
    <link>https://forem.com/shaikhkamran</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%2F899562%2F516a5de8-f186-45a9-86cd-b2f3515bfd7d.jpeg</url>
      <title>Forem: kamran</title>
      <link>https://forem.com/shaikhkamran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shaikhkamran"/>
    <language>en</language>
    <item>
      <title>Top 10 API Mistakes Developers Make (and How to Fix Them)</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Wed, 01 Apr 2026 14:47:10 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/top-10-api-mistakes-developers-make-and-how-to-fix-them-4p3i</link>
      <guid>https://forem.com/shaikhkamran/top-10-api-mistakes-developers-make-and-how-to-fix-them-4p3i</guid>
      <description>&lt;p&gt;Building an API is easy.&lt;br&gt;
Building a scalable, secure, and maintainable API is where most developers fail.&lt;br&gt;
This article breaks down the top 10 mistakes that cause real-world production issues and how to avoid them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Poor API Design (Non-RESTful Structure)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A common mistake is designing APIs around actions instead of resources. Endpoints like “getUsers” or “createUser” reflect function calls rather than resource-oriented design.&lt;/li&gt;
&lt;li&gt;The correct approach is to model APIs around resources such as users, orders, or products. This leads to predictable and consistent endpoints.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;A well-structured API improves developer experience, reduces confusion, and makes the system easier to extend over time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Misusing HTTP Methods
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Another frequent issue is ignoring HTTP semantics. Developers often use a single method, typically GET, for all operations including updates and deletions.&lt;/li&gt;
&lt;li&gt;Each HTTP method has a defined purpose:&lt;/li&gt;
&lt;li&gt;GET for reading data, POST for creating, PUT or PATCH for updating, and DELETE for removal.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;Correct usage enables caching, aligns with standard web behavior, and prevents unintended side effects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lack of Input Validation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Accepting client input without validation is a major flaw. This includes missing checks for required fields, incorrect data types, or invalid formats.&lt;/li&gt;
&lt;li&gt;Validation should be enforced at the API boundary before any business logic is executed.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;It prevents invalid data from entering the system, reduces runtime failures, and acts as a first layer of security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Poor Error Handling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Generic error responses like “something went wrong” provide no actionable information. Inconsistent status codes further complicate debugging.&lt;/li&gt;
&lt;li&gt;APIs should return structured error responses along with appropriate HTTP status codes such as 400, 401, 403, 404, and 500.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;Clear error responses improve debugging, speed up development, and enhance integration with frontend or third-party systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exposing Sensitive Data
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Returning entire database objects without filtering can expose sensitive information such as passwords, tokens, or internal fields.&lt;/li&gt;
&lt;li&gt;Responses should be carefully curated to include only necessary and safe data.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;Data exposure is a critical security risk and can lead to compliance violations and loss of user trust.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No Rate Limiting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;APIs without request limits are vulnerable to abuse, including brute-force attacks and denial-of-service scenarios.&lt;/li&gt;
&lt;li&gt;Rate limiting strategies such as IP-based or token-based throttling should be implemented.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;It protects system resources, ensures fair usage, and improves overall system stability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Weak Authentication and Authorization Design
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Many systems mix authentication and authorization logic throughout the codebase. This often results in inconsistent access control and potential security gaps.&lt;/li&gt;
&lt;li&gt;Authentication should verify identity, while authorization should control access to resources based on roles or permissions.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;A clear separation prevents privilege escalation and simplifies long-term maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No Pagination or Filtering
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Returning large datasets in a single response is inefficient and can severely impact performance.&lt;/li&gt;
&lt;li&gt;APIs should support pagination and filtering mechanisms to control the volume of data returned.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;It reduces server load, improves response times, and enhances user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No API Versioning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Making changes to an API without versioning can break existing clients. This is especially problematic in systems with multiple consumers.&lt;/li&gt;
&lt;li&gt;Versioning strategies, such as including version identifiers in the URL, allow safe evolution of APIs.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;It ensures backward compatibility and enables continuous improvement without disrupting users.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No Logging and Monitoring
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Operating an API without logs or monitoring is equivalent to running a system blindly. When issues occur, there is no visibility into what went wrong.&lt;/li&gt;
&lt;li&gt;Logging, error tracking, and performance monitoring should be integral parts of the system.&lt;/li&gt;
&lt;li&gt;Why it matters:&lt;/li&gt;
&lt;li&gt;It allows faster debugging, proactive issue detection, and better system reliability.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Most API-related failures are not caused by complex algorithms but by fundamental design and architectural oversights. Addressing these ten areas significantly improves the robustness of any API.&lt;/li&gt;
&lt;li&gt;A well-designed API is predictable, secure, and easy to evolve. These qualities are essential for any system expected to operate reliably in production.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>backend</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Critical Rendering Path (CRP) – Complete Technical Guide for Frontend Developers</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Tue, 24 Feb 2026 18:49:50 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/critical-rendering-path-crp-complete-technical-guide-for-frontend-developers-2ag9</link>
      <guid>https://forem.com/shaikhkamran/critical-rendering-path-crp-complete-technical-guide-for-frontend-developers-2ag9</guid>
      <description>&lt;p&gt;If you are serious about frontend performance, you must understand the Critical Rendering Path (CRP). This is not optional knowledge — this is foundational.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;What is Critical Rendering Path?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Critical Rendering Path (CRP) is the sequence of steps the browser performs to convert HTML, CSS, and JavaScript into pixels on the screen.&lt;/p&gt;

&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CRP = How browser turns your code into visible UI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal of optimizing CRP is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduce time to first render&lt;/li&gt;
&lt;li&gt;Reduce Time to First Contentful Paint (FCP)&lt;/li&gt;
&lt;li&gt;Improve Largest Contentful Paint (LCP)&lt;/li&gt;
&lt;li&gt;Improve overall perceived performance&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Step-by-Step Breakdown of Critical Rendering Path&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s break this into technical phases.&lt;/p&gt;

&lt;p&gt;Step 1: HTML Parsing → DOM Construction&lt;/p&gt;

&lt;p&gt;When browser receives HTML:&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;html&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Browser parses it and builds a DOM (Document Object Model) tree.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is DOM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A tree structure representing HTML elements.&lt;/p&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;HTML parsing is incremental&lt;/p&gt;

&lt;p&gt;Parsing stops when browser encounters blocking scripts&lt;/p&gt;




&lt;p&gt;Step 2: CSS Parsing → CSSOM Construction&lt;/p&gt;

&lt;p&gt;Browser then processes CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h1 {
  color: red;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It creates a CSSOM (CSS Object Model).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why CSSOM matters?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because browser needs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DOM + CSSOM → to know what to render and how to style it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;CSS is render-blocking.&lt;/p&gt;

&lt;p&gt;Browser cannot render until CSSOM is built.&lt;/p&gt;




&lt;p&gt;Step 3: JavaScript Execution&lt;/p&gt;

&lt;p&gt;When browser encounters:&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;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Default behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stop HTML parsing&lt;/li&gt;
&lt;li&gt;Download JS&lt;/li&gt;
&lt;li&gt;Execute JS&lt;/li&gt;
&lt;li&gt;Resume parsing&lt;/li&gt;
&lt;li&gt;This is why JavaScript is parser-blocking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If JS modifies DOM or CSSOM, browser may need to recalculate layout.&lt;/p&gt;




&lt;p&gt;Step 4: Render Tree Construction&lt;/p&gt;

&lt;p&gt;Now browser combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM&lt;/li&gt;
&lt;li&gt;CSSOM&lt;/li&gt;
&lt;li&gt;Into a Render Tree&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Render tree includes only visible elements.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;display: none elements → NOT included&lt;/li&gt;
&lt;li&gt; → NOT included&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step 5: Layout (Reflow)&lt;/p&gt;

&lt;p&gt;Browser calculates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Element dimensions&lt;/li&gt;
&lt;li&gt;Position on screen&lt;/li&gt;
&lt;li&gt;Box model&lt;/li&gt;
&lt;li&gt;Flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process is called:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Layout or Reflow&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This step is expensive.&lt;/p&gt;

&lt;p&gt;If layout changes, browser recalculates positions again.&lt;/p&gt;




&lt;p&gt;Step 6: Paint&lt;/p&gt;

&lt;p&gt;Browser converts layout tree into pixels.&lt;/p&gt;

&lt;p&gt;It paints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text&lt;/li&gt;
&lt;li&gt;Colors&lt;/li&gt;
&lt;li&gt;Borders&lt;/li&gt;
&lt;li&gt;Shadows&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step 7: Compositing&lt;/p&gt;

&lt;p&gt;If elements use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transform&lt;/li&gt;
&lt;li&gt;opacity&lt;/li&gt;
&lt;li&gt;position: fixed&lt;/li&gt;
&lt;li&gt;z-index layers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Browser creates separate layers and composites them together.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;What Causes Performance Issues in CRP?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now let’s get serious.&lt;/p&gt;

&lt;p&gt;These are real-world performance killers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Render Blocking CSS
&lt;/h2&gt;

&lt;p&gt;Problem:&lt;/p&gt;

&lt;p&gt;Large CSS files&lt;/p&gt;

&lt;p&gt;Multiple CSS files&lt;/p&gt;

&lt;p&gt;CSS in &lt;/p&gt; blocking rendering

&lt;p&gt;Why bad?&lt;br&gt;
Browser must build CSSOM before painting anything.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minify CSS&lt;/li&gt;
&lt;li&gt;Remove unused CSS&lt;/li&gt;
&lt;li&gt;Use Critical CSS&lt;/li&gt;
&lt;li&gt;Load non-critical CSS async&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&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;link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Parser Blocking JavaScript
&lt;/h2&gt;

&lt;p&gt;Problem:&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;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Browser stops parsing.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;p&gt;Use:&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;script src="app.js" defer&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Large DOM Size
&lt;/h2&gt;

&lt;p&gt;Huge DOM = slow layout.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Thousands of nodes&lt;/li&gt;
&lt;li&gt;Deep nested trees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid unnecessary wrappers&lt;/li&gt;
&lt;li&gt;Use virtualization (e.g., infinite lists)&lt;/li&gt;
&lt;li&gt;Remove unused elements&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Layout Thrashing (Forced Synchronous Layout)
&lt;/h2&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;element.style.width = "100px";
element.offsetHeight;
element.style.width = "200px";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing&lt;/li&gt;
&lt;li&gt;Reading layout&lt;/li&gt;
&lt;li&gt;Writing again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Browser recalculates layout multiple times.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;p&gt;Batch reads and writes.&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;requestAnimationFrame&lt;/li&gt;
&lt;li&gt;Avoid measuring immediately after mutating&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Large Images Without Optimization
&lt;/h2&gt;

&lt;p&gt;Huge images delay paint and LCP.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use WebP/AVIF&lt;/li&gt;
&lt;li&gt;Lazy load below-fold images&lt;/li&gt;
&lt;li&gt;Compress assets
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="hero.webp" loading="lazy"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please feel free to add more in comments&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Summary
&lt;/h2&gt;

&lt;p&gt;Critical Rendering Path is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The pipeline that turns your HTML, CSS, and JS into pixels.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you optimize CRP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your site loads faster&lt;/li&gt;
&lt;li&gt;Users stay longer&lt;/li&gt;
&lt;li&gt;SEO improves&lt;/li&gt;
&lt;li&gt;Conversions increase&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Want More Content Like This?&lt;/p&gt;

&lt;p&gt;If you found this helpful and want practical developer insights, performance tips, and real-world coding content, make sure to check out my:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/kode_with_kamran/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; for short, actionable tech reels&lt;br&gt;
&lt;a href="https://www.youtube.com/@kodewithkamran" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channel for in-depth coding and system design videos&lt;br&gt;
More valuable content is coming soon, see you there.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Most devs know JavaScript… but don’t MASTER it.</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Mon, 09 Feb 2026 11:51:56 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/most-devs-know-javascript-but-dont-master-it-2on9</link>
      <guid>https://forem.com/shaikhkamran/most-devs-know-javascript-but-dont-master-it-2on9</guid>
      <description>&lt;p&gt;&lt;strong&gt;JavaScript Mastery in 90 Days&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 1–15: Core Foundations (Non-Negotiable)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 1 – What JavaScript is &amp;amp; where it runs&lt;br&gt;
Day 2 – JS Engine &amp;amp; Runtime basics&lt;br&gt;
Day 3 – Variables (let, const)&lt;br&gt;
Day 4 – Data Types &amp;amp; typeof&lt;br&gt;
Day 5 – Type Coercion &amp;amp; Equality&lt;/p&gt;

&lt;p&gt;Day 6 – Operators &amp;amp; Expressions&lt;br&gt;
Day 7 – Conditionals (if / switch)&lt;br&gt;
Day 8 – Loops (for, while)&lt;br&gt;
Day 9 – Functions &amp;amp; Parameters&lt;br&gt;
Day 10 – Scope (global, block, function)&lt;/p&gt;

&lt;p&gt;Day 11 – Hoisting explained clearly&lt;br&gt;
Day 12 – Execution Context&lt;br&gt;
Day 13 – Call Stack basics&lt;br&gt;
Day 14 – Memory &amp;amp; Garbage Collection&lt;br&gt;
Day 15 – Write clean JS code&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 16–30: Data Structures &amp;amp; Core JS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 16 – Arrays (real-world usage)&lt;br&gt;
Day 17 – Array methods (map, filter, reduce)&lt;br&gt;
Day 18 – Objects &amp;amp; key-value logic&lt;br&gt;
Day 19 – Reference vs Value&lt;br&gt;
Day 20 – this keyword (all cases)&lt;/p&gt;

&lt;p&gt;Day 21 – bind, call, apply&lt;br&gt;
Day 22 – Closures (power of functions)&lt;br&gt;
Day 23 – Lexical Environment&lt;br&gt;
Day 24 – Prototypes&lt;br&gt;
Day 25 – Prototypal Inheritance&lt;/p&gt;

&lt;p&gt;Day 26 – Classes (syntactic sugar)&lt;br&gt;
Day 27 – OOP in JavaScript&lt;br&gt;
Day 28 – Functional Programming basics&lt;br&gt;
Day 29 – Pure functions &amp;amp; immutability&lt;br&gt;
Day 30 – Mini Project (Logic-heavy)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 31–45: Asynchronous JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 31 – Sync vs Async JS&lt;br&gt;
Day 32 – Web APIs&lt;br&gt;
Day 33 – setTimeout &amp;amp; setInterval&lt;br&gt;
Day 34 – Callbacks&lt;br&gt;
Day 35 – Callback Hell&lt;/p&gt;

&lt;p&gt;Day 36 – Promises (deep understanding)&lt;br&gt;
Day 37 – Promise chaining&lt;br&gt;
Day 38 – async / await&lt;br&gt;
Day 39 – Error handling in async code&lt;br&gt;
Day 40 – Event Loop (must-know)&lt;/p&gt;

&lt;p&gt;Day 41 – Microtasks vs Macrotasks&lt;br&gt;
Day 42 – Fetch API&lt;br&gt;
Day 43 – Axios vs Fetch&lt;br&gt;
Day 44 – Retry &amp;amp; timeout logic&lt;br&gt;
Day 45 – Async mini project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 46–60: Browser &amp;amp; Advanced JS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 46 – DOM Tree &amp;amp; Rendering&lt;br&gt;
Day 47 – DOM Selection &amp;amp; Manipulation&lt;br&gt;
Day 48 – Events &amp;amp; Event Flow&lt;br&gt;
Day 49 – Event Delegation&lt;br&gt;
Day 50 – Forms &amp;amp; Validation&lt;/p&gt;

&lt;p&gt;Day 51 – LocalStorage &amp;amp; SessionStorage&lt;br&gt;
Day 52 – Cookies basics&lt;br&gt;
Day 53 – Debouncing&lt;br&gt;
Day 54 – Throttling&lt;br&gt;
Day 55 – Shallow vs Deep Copy&lt;/p&gt;

&lt;p&gt;Day 56 – Spread &amp;amp; Rest operators&lt;br&gt;
Day 57 – Destructuring&lt;br&gt;
Day 58 – Modules (import/export)&lt;br&gt;
Day 59 – Bundlers basics&lt;br&gt;
Day 60 – Browser performance tips&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 61–75: Advanced Concepts (Interview Level)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 61 – JavaScript Internals revision&lt;br&gt;
Day 62 – Memory leaks &amp;amp; prevention&lt;br&gt;
Day 63 – Currying&lt;br&gt;
Day 64 – Composition vs Inheritance&lt;br&gt;
Day 65 – Design patterns (JS-focused)&lt;/p&gt;

&lt;p&gt;Day 66 – Observer pattern&lt;br&gt;
Day 67 – Singleton pattern&lt;br&gt;
Day 68 – Factory pattern&lt;br&gt;
Day 69 – Error boundaries (concept)&lt;br&gt;
Day 70 – Custom utility functions&lt;/p&gt;

&lt;p&gt;Day 71 – Polyfills&lt;br&gt;
Day 72 – Write your own map/filter&lt;br&gt;
Day 73 – Immutable data patterns&lt;br&gt;
Day 74 – Functional vs OOP tradeoffs&lt;br&gt;
Day 75 – Advanced problem solving&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 76–90: Mastery &amp;amp; Real World&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 76 – JS best practices&lt;br&gt;
Day 77 – Code readability &amp;amp; refactoring&lt;br&gt;
Day 78 – Time &amp;amp; Space Complexity&lt;br&gt;
Day 79 – Testing basics&lt;br&gt;
Day 80 – Debugging like a pro&lt;/p&gt;

&lt;p&gt;Day 81 – Browser dev tools mastery&lt;br&gt;
Day 82 – Security basics (XSS, CSRF)&lt;br&gt;
Day 83 – JS performance optimization&lt;br&gt;
Day 84 – Build reusable utilities&lt;br&gt;
Day 85 – Real-world project planning&lt;/p&gt;

&lt;p&gt;Day 86 – Project implementation&lt;br&gt;
Day 87 – Edge cases handling&lt;br&gt;
Day 88 – Refactor &amp;amp; optimize&lt;br&gt;
Day 89 – Interview-level revision&lt;br&gt;
Day 90 – You don’t “know JS” — you OWN it&lt;/p&gt;

&lt;p&gt;Want More Content Like This?&lt;/p&gt;

&lt;p&gt;If you found this helpful and want practical developer insights, performance tips, and real-world coding content, make sure to check out my:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/kode_with_kamran/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; for short, actionable tech reels&lt;br&gt;
&lt;a href="https://www.youtube.com/@kodewithkamran" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channel for in-depth coding and system design videos&lt;br&gt;
More valuable content is coming soon, see you there.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>roadmap</category>
    </item>
    <item>
      <title>Rate Limiter: The Unsung Guardian of Your Backend APIs</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Mon, 09 Feb 2026 03:01:56 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/rate-limiter-the-unsung-guardian-of-your-backend-apis-45mm</link>
      <guid>https://forem.com/shaikhkamran/rate-limiter-the-unsung-guardian-of-your-backend-apis-45mm</guid>
      <description>&lt;p&gt;Modern applications live and die by their APIs. Whether it’s a mobile app, a SaaS dashboard, or a public API consumed by thousands of clients, uncontrolled traffic is dangerous. This is where a Rate Limiter becomes one of the most important yet underrated backend components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdthsnut97zrukvgs6un5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdthsnut97zrukvgs6un5.jpg" alt="Guard depicting Rate Limiter" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article, we’ll break down:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What a rate limiter is&lt;/li&gt;
&lt;li&gt;Why it is critical&lt;/li&gt;
&lt;li&gt;Common rate-limiting strategies&lt;/li&gt;
&lt;li&gt;A production-ready Node.js rate limiter with configurable parameters&lt;/li&gt;
&lt;li&gt;What Is a Rate Limiter?&lt;/li&gt;
&lt;li&gt;A rate limiter is a mechanism that restricts how many requests a client can make to a server within a given time window.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;In simple words:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Ek rule bana do ke ek user / IP / token ek fixed time me kitni requests kar sakta hai.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Max 100 requests per minute per user&lt;/li&gt;
&lt;li&gt;Max 5 login attempts per minute&lt;/li&gt;
&lt;li&gt;Max 10 OTP requests per hour&lt;/li&gt;
&lt;li&gt;Why Do You Need a Rate Limiter?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Without a rate limiter, your system is vulnerable to:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Brute-Force Attacks: Attackers can try thousands of password combinations in seconds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DDoS or Traffic Flooding: Even non-malicious traffic (badly written clients) can overload your server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Resource Exhaustion: Each request consumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Database connections&lt;/li&gt;
&lt;li&gt;Network&lt;/li&gt;
&lt;li&gt;bandwidth&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fair Usage Enforcement: One aggressive client should not degrade experience for everyone else.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Common Rate Limiting Strategies&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fixed Window: Count requests in a fixed time window.&lt;br&gt;
Example: 0–60 seconds → max 100 requests&lt;br&gt;
Problem: sudden spikes at window reset.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sliding Window: Requests are counted in a rolling time window. More accurate but slightly complex.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Token Bucket (Most Popular)&lt;br&gt;
Bucket has tokens&lt;br&gt;
Each request consumes a token&lt;br&gt;
Tokens refill over time&lt;br&gt;
Used by: AWS, NGINX, API gateways&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leaky Bucket: Requests flow out at a fixed rate, excess is dropped.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Where Should You Apply Rate Limiting?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Gateway (best place)&lt;/li&gt;
&lt;li&gt;Reverse Proxy (NGINX, Cloudflare)&lt;/li&gt;
&lt;li&gt;Application Layer (Node.js / Express)&lt;/li&gt;
&lt;li&gt;Database layer (rare but possible)&lt;/li&gt;
&lt;li&gt;For most Node.js apps, application-level rate limiting is a solid start.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Node.js Rate Limiter (Configurable &amp;amp; Clean)&lt;/strong&gt;&lt;br&gt;
Below is a custom Express.js rate limiter middleware using in-memory storage (good for MVPs and small apps).&lt;/p&gt;

&lt;p&gt;Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configurable window size&lt;/li&gt;
&lt;li&gt;Configurable request limit&lt;/li&gt;
&lt;li&gt;Per-IP or per-key limiting&lt;/li&gt;
&lt;li&gt;Clean response with retry info
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
// rateLimiter.js
const rateLimiter = ({
    windowMs = 60 * 1000, // 1 minute
    maxRequests = 100,
    keyGenerator = (req) =&amp;gt; req.ip,
} = {}) =&amp;gt; {
    const store = new Map();

    return (req, res, next) =&amp;gt; {
        const key = keyGenerator(req);
        const currentTime = Date.now();

        if (!store.has(key)) {
            store.set(key, {
                count: 1,
                startTime: currentTime,
            });
            return next();
        }

        const data = store.get(key);
        const elapsedTime = currentTime - data.startTime;

        if (elapsedTime &amp;gt; windowMs) {
            // Reset window
            store.set(key, {
                count: 1,
                startTime: currentTime,
            });
            return next();
        }

        if (data.count &amp;gt;= maxRequests) {
            const retryAfter = Math.ceil(
                (windowMs - elapsedTime) / 1000
            );

            return res.status(429).json({
                success: false,
                message: "Too many requests",
                retryAfterSeconds: retryAfter,
            });
        }

        data.count += 1;
        store.set(key, data);
        next();
    };
};

module.exports = rateLimiter;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Use in Express JS App&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
//Using in Express app

const express = require("express");
const rateLimiter = require("./rateLimiter");

const app = express();

// Example: Public API
app.use(
    "/api",
    rateLimiter({
        windowMs: 60 * 1000,
        maxRequests: 100,
    })
);

// Example: Login API (strict)
app.post(
    "/login",
    rateLimiter({
        windowMs: 60 * 1000,
        maxRequests: 5,
        keyGenerator: (req) =&amp;gt; req.body.email || req.ip,
    }),
    (req, res) =&amp;gt; {
        res.json({ message: "Login attempt processed" });
    }
);

app.listen(3000, () =&amp;gt; {
    console.log("Server running on port 3000");
}); 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A rate limiter is not just a performance optimization, it’s a security boundary. If authentication is the lock on your door, rate limiting is the guard standing outside. If you’re building APIs in Node.js, adding a rate limiter early will save you from&lt;/p&gt;

&lt;p&gt;Outages&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abuse&lt;/li&gt;
&lt;li&gt;Angry users&lt;/li&gt;
&lt;li&gt;Expensive scaling problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Want More Content Like This?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you found this helpful and want practical developer insights, performance tips, and real-world coding content, make sure to check out my:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/kode_with_kamran/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; for short, actionable tech reels&lt;br&gt;
&lt;a href="https://www.youtube.com/@kodewithkamran" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channel for in-depth coding and system design videos&lt;br&gt;
More valuable content is coming soon, see you there.&lt;/p&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>node</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>10 SaaS Ideas Developers Can Build to Earn Side Income</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Wed, 23 Apr 2025 14:28:32 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/10-saas-ideas-developers-can-build-to-earn-side-income-51o2</link>
      <guid>https://forem.com/shaikhkamran/10-saas-ideas-developers-can-build-to-earn-side-income-51o2</guid>
      <description>&lt;p&gt;In the age of the creator economy and no-code tools, developers still hold the ultimate superpower: the ability to build from scratch. Whether you're looking to supplement your 9–5 income or dreaming of launching your own startup, SaaS (Software-as-a-Service) products offer a low-overhead, high-leverage way to earn money online.&lt;/p&gt;

&lt;p&gt;In this post, we’ll look at 10 practical SaaS ideas any web developer can build—plus how &lt;a href="https://thecodersbakery.com/tcb" rel="noopener noreferrer"&gt;The Coders Bakery (TCB)&lt;/a&gt; can speed up your development by handling the boilerplate, setup, and deployment for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why SaaS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SaaS offers recurring revenue, low initial costs, and scalability. As a solo developer or small team, you don’t need venture capital or a big launch—just a well-targeted solution and consistent execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Simple Invoicing Tool for Freelancers&lt;/strong&gt;&lt;br&gt;
A clean, user-friendly invoicing platform where freelancers can send branded invoices, track payments, and download PDFs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Appointment Booking System&lt;/strong&gt;&lt;br&gt;
Great for barbers, coaches, and consultants. Users can manage their availability, let clients book slots, and send reminders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Micro-SaaS for Content Planners&lt;/strong&gt;&lt;br&gt;
A minimalist tool to help content creators organize their ideas, track posts, and collaborate with team members.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Client Portal for Agencies&lt;/strong&gt;&lt;br&gt;
A white-label SaaS that allows digital agencies to create private portals for their clients with project updates and document sharing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. AI-Based Blog Title Generator&lt;/strong&gt;&lt;br&gt;
Integrate with GPT APIs to offer catchy headline suggestions based on blog topic or keyword. Monetize via freemium plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Personal Finance Tracker&lt;/strong&gt;&lt;br&gt;
A lightweight finance tracker with charts, savings goals, and monthly insights. Ideal for Gen-Z users or students.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Custom Form Builder&lt;/strong&gt;&lt;br&gt;
Drag-and-drop interface for users to create surveys, feedback forms, or job applications, with result dashboards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Resume Website Generator&lt;/strong&gt;&lt;br&gt;
Let users choose from templates, input their info, and publish a live resume site with a custom domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Habit Tracker with Gamification&lt;/strong&gt;&lt;br&gt;
Build a personal improvement SaaS that lets users track habits, earn streaks, and get reminders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Multi-User Quiz App&lt;/strong&gt;&lt;br&gt;
Sell subscriptions to teachers, trainers, or content creators who want to create and share quizzes with their audience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How TCB Helps You Build Faster&lt;/strong&gt;&lt;br&gt;
Once you selected your idea, here's how TCB becomes your secret weapon:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Boilerplate in seconds&lt;/strong&gt;: TCB generates production-ready codebases in popular frameworks (Next.js, Angular, Laravel, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plug-and-play features&lt;/strong&gt;: Add authentication, payment, email, analytics, dashboards, and more with a few clicks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fully deployable&lt;/strong&gt;: TCB setups are optimized for deployment on platforms like Vercel, Netlify, or your custom VPS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech stack freedom&lt;/strong&gt;: Choose your preferred frontend and backend combo (e.g., React + Node.js, or Angular + Firebase).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
You don’t need a million-dollar idea to get started. You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A pain point people care about.&lt;/li&gt;
&lt;li&gt;A simple solution they’re willing to pay for.&lt;/li&gt;
&lt;li&gt;A repeatable process to build and iterate fast.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s exactly where The Coders Bakery helps. It gets the boilerplate out of your way so you can focus on what matters most: building, testing, and launching.&lt;/p&gt;

&lt;p&gt;Ready to turn your next idea into reality? Spin up your first app in minutes at &lt;a href="https://thecodersbakery.com/tcb" rel="noopener noreferrer"&gt;The Coders Bakery&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>sass</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My App is Live Now!!!</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Mon, 24 Mar 2025 08:49:45 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/my-app-is-live-now-1alg</link>
      <guid>https://forem.com/shaikhkamran/my-app-is-live-now-1alg</guid>
      <description>&lt;p&gt;I am happy to anounce that my app is live now! This is the simple side project i wanted to create and make live.&lt;/p&gt;

&lt;p&gt;All it took a day to create fully working Quiz App for software developers and make it live share with you all. I will explain exactly how i created “QUIZ UP” so that you can also replicate it or similar app. I will also share the live link with you so that you can play with the app yourself.&lt;/p&gt;

&lt;p&gt;Let me first talk about the hero which helped me do this, “The Coders Bakery”. TCB helped me generate the code and on top of that code, i made some changes and updated some piece of code for beauty and just like made my working app live within a day.&lt;/p&gt;

&lt;p&gt;Here is the &lt;a href="https://youtu.be/yaCP80pidAc" rel="noopener noreferrer"&gt;Video of the process&lt;/a&gt;, if you are more of a watcher, than a reader.&lt;/p&gt;

&lt;p&gt;Talking about how i build it, for TCB first i have to break down my apps in little pieces ( entities ). I have to think about the properties for each entities just like given in the below diagram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xf0dxblb6x7o5nabo9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xf0dxblb6x7o5nabo9f.png" alt="Quiz App Entities" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have your data ready, fill out the TCB dashboard with the data. Now you can simply export your project with just one click. The codebase is with you now, you can update the beauty part and change the flow as per your need.&lt;/p&gt;

&lt;p&gt;The codebase is structured in a simple way, separating each entity into different folders. Once you look at the folders, it self explanatory.&lt;/p&gt;

&lt;p&gt;On admin side, we will get admin panel to add category, subcategory and quiz and all entities will be related as we defined it in TCB dashboard.&lt;/p&gt;

&lt;p&gt;On user side, each entity will have list page and a detail page. On the list page, when user will click on the card, it will redirect it to the detail page. Now here, we have to make some change and from category the redirection should be updated to subcategory, and then to Quiz page. This whole changes are done in detail in the YT video given.&lt;/p&gt;

&lt;p&gt;Now when user will login, list of category will be shown, on click of the category, subcategory of that category will be shown and the again quiz will be shown for that subcategory. On answering each quiz, you will be moved to the next quiz. You can play the quiz and understand it better on the live app.&lt;/p&gt;

&lt;p&gt;I have used Render to deploy my app and MongoDB Atlas to deploy my DB. This is how i configured and made the whole app in a day. You can check the app, play with it, checkout the detailed video to see how i created it and make your own app from the The Coders Bakery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quiz-app-xesy.onrender.com" rel="noopener noreferrer"&gt;Live Quiz App Link&lt;/a&gt; ( slow first load because of free server )&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thecodersbakery.com/auth/register" rel="noopener noreferrer"&gt;The Coders Bakery Link&lt;/a&gt;&lt;/p&gt;

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

</description>
      <category>webdev</category>
      <category>react</category>
      <category>node</category>
    </item>
    <item>
      <title>How to make your first FullStack App?</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Mon, 03 Mar 2025 15:16:54 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/how-developers-or-students-can-build-and-learn-full-stack-apps-kam</link>
      <guid>https://forem.com/shaikhkamran/how-developers-or-students-can-build-and-learn-full-stack-apps-kam</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Learning full-stack development can be overwhelming, especially for new developers and college students. From setting up databases and authentication to integrating payment gateways and real-time communication, the process can be daunting. This is where &lt;strong&gt;The Coders Bakery (TCB)&lt;/strong&gt; comes in—helping aspiring developers quickly generate production-ready boilerplate code while also providing an opportunity to learn by analyzing real-world implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is The Coders Bakery?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://thecodersbakery.com/auth/register" rel="noopener noreferrer"&gt;The Coders Bakery (TCB)&lt;/a&gt; is a powerful code generation tool designed to help developers create boilerplate code for full-stack applications using trending web development frameworks. It allows users to configure essential features like authentication, database integration, payments, WebSockets, and analytics without starting from scratch. This enables developers to focus on building unique features rather than wasting time on repetitive setup tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How TCB Helps New Developers and College Students
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Hands-On Learning with Real-World Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;TCB generates industry-standard code that follows best practices. By studying this code, beginners can understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How backend and frontend frameworks interact&lt;/li&gt;
&lt;li&gt;The structure of a well-organized full-stack application&lt;/li&gt;
&lt;li&gt;Security and performance optimizations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Faster Project Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Instead of spending hours setting up a full-stack environment, TCB lets developers spin up a project in minutes. This allows them to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickly prototype ideas&lt;/li&gt;
&lt;li&gt;Work on assignments efficiently&lt;/li&gt;
&lt;li&gt;Start internships or freelance projects with confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Customizable Features for Practical Experience&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;TCB provides configurations for various features, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User authentication (OAuth, JWT, email/password)&lt;/li&gt;
&lt;li&gt;Payment integration (Stripe, PayPal)&lt;/li&gt;
&lt;li&gt;WebSockets for real-time communication&lt;/li&gt;
&lt;li&gt;Admin dashboards for analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Students can enable or disable features to see how different modules work together, making learning interactive and fun.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Supports Multiple Frameworks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;TCB supports trending frontend and backend frameworks, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, Angular, Vue&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js (Express, NestJS), Django, Flask&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL, MongoDB, MySQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps students explore different tech stacks and choose the one they prefer.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Encourages Best Practices&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Since TCB-generated code follows best practices, developers naturally adopt good habits like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modular code structure&lt;/li&gt;
&lt;li&gt;API versioning&lt;/li&gt;
&lt;li&gt;Secure authentication and authorization&lt;/li&gt;
&lt;li&gt;Database migrations and ORM usage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Portfolio Building&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;College students can use TCB to quickly build and deploy projects, making it easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Showcase skills to potential employers&lt;/li&gt;
&lt;li&gt;Participate in hackathons with functional prototypes&lt;/li&gt;
&lt;li&gt;Contribute to open-source projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Bridges the Gap Between Learning and Implementation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Many coding tutorials focus on individual concepts but fail to show how everything connects in a real-world application. TCB bridges this gap by generating complete applications with well-integrated components, making learning more practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;For new developers and college students, The Coders Bakery is a game-changer. It simplifies full-stack development by generating structured, best-practice code while allowing users to learn by modifying and experimenting with real-world applications. Whether you're building projects for learning, freelancing, or professional work, TCB empowers you to code smarter and faster.&lt;/p&gt;

&lt;p&gt;Start building with TCB today and accelerate your journey to becoming a full-stack developer!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>node</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How I Build about 60% of My App's Codebase in a day.</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Mon, 06 Jan 2025 13:28:57 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/how-i-build-about-60-of-my-apps-codebase-in-a-day-1555</link>
      <guid>https://forem.com/shaikhkamran/how-i-build-about-60-of-my-apps-codebase-in-a-day-1555</guid>
      <description>&lt;p&gt;As a software developer, I'm always on the lookout for tools that can streamline my workflow and boost productivity. Recently, I had the opportunity to use a SaaS platform called The Coders Bakery, and I must say, it was a game-changer. The platform promises to help developers build a significant portion of their app's codebase quickly and efficiently, and it certainly delivered on that promise.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Impressions
&lt;/h2&gt;

&lt;p&gt;The Coders Bakery has an intuitive and user-friendly interface. From the moment I signed up, I could tell that a lot of thought had gone into making the platform as accessible as possible. The dashboard is clean, and the onboarding process is straightforward, guiding you through the initial steps with ease.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqptxfeyqfigeetqekab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqptxfeyqfigeetqekab.png" alt="Landing Page" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;Setting up my project on The Coders Bakery was a breeze. After providing some basic information about my app and its requirements, the platform quickly generated a project structure tailored to my needs. This included the core components, libraries, and dependencies that I would need to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Generation
&lt;/h2&gt;

&lt;p&gt;One of the standout features of The Coders Bakery is its code generation capabilities. Within minutes, the platform had generated around 60% of my app's codebase. This included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication Module: Complete with user registration, login, and password recovery functionalities.&lt;/li&gt;
&lt;li&gt;Database Integration: Pre-configured models and ORM setup for seamless database operations.&lt;/li&gt;
&lt;li&gt;API Endpoints: RESTful APIs for all major CRUD operations.&lt;/li&gt;
&lt;li&gt;UI Components: Basic yet functional UI components using popular frameworks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The generated code was clean, well-documented, and adhered to best practices. It was clear that the team behind The Coders Bakery had put in a lot of effort to ensure that the code was not only functional but also maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customization and Flexibility
&lt;/h2&gt;

&lt;p&gt;While the generated code provided a solid foundation, it was also highly customizable. The platform allowed me to tweak the generated components to suit my specific needs. Whether it was modifying the database schema, adjusting the API routes, or customizing the UI elements, The Coders Bakery provided the flexibility to make changes easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39vbagqsl03uojrn0ov1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39vbagqsl03uojrn0ov1.png" alt="Customization" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Collaboration and Integration
&lt;/h2&gt;

&lt;p&gt;Another great aspect of The Coders Bakery is its integration with popular payment gateway like paypal, razorpay or stripe. Additionally, the platform supports integration with Email and SMS services. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rlqoq0pczg1ohqgjqo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rlqoq0pczg1ohqgjqo7.png" alt="Collaborations" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Time and Effort Saved
&lt;/h2&gt;

&lt;p&gt;By using The Coders Bakery, I was able to save a significant amount of time and effort. Tasks that would have taken days or even weeks were completed in a matter of minutes. This allowed me to focus more on the unique aspects of my app, such as fine-tuning the user experience and adding custom features, rather than getting bogged down with boilerplate code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to create My Project
&lt;/h2&gt;

&lt;p&gt;I wanted to build a Restaurant Rating App in which users can rate the dishes of the restaurant and it will generate the rating of the restaurant. I needed an admin panel from where admin can add restaurant and dishes and monitor user’s ratings. So i needed an admin panel, user facing UIs, obviously whole User authentication and authorization and Email services for notification. I wanted the functionality where users can comment on dishes improvement and likes, dislikes.&lt;/p&gt;

&lt;p&gt;So First thing i did was list down all Entities I will need in my app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Restaurant&lt;/li&gt;
&lt;li&gt;Dish&lt;/li&gt;
&lt;li&gt;Ingredient&lt;/li&gt;
&lt;li&gt;Rating&lt;/li&gt;
&lt;li&gt;Comment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now picking up each entity, i added all properties i need in each entity, like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6bhbf5f6ftgtx48g968.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6bhbf5f6ftgtx48g968.png" alt="Entiy's Properties" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then i put all these details in the Dashboard and creating relation between entities was super simple. Then by just one click, the whole codebase was ready to be used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Coders Bakery has proven to be an invaluable tool in my software development toolkit. Its ability to generate a substantial portion of my app's codebase quickly and efficiently has significantly accelerated my development process. If you're a developer looking to boost your productivity and streamline your workflow, I highly recommend giving The Coders Bakery a try. It’s not just about saving time; it’s about delivering quality code faster and focusing on what truly matters—building great applications.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://thecodersbakery.com/tcb" rel="noopener noreferrer"&gt;The Coders Bakery&lt;/a&gt;, you can turn your coding dreams into reality, one project at a time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Best Way to Get Job as a Fresher Web Developer in 2025</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Fri, 03 Jan 2025 14:20:46 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/best-way-to-get-job-as-a-fresher-web-developer-in-2025-4dba</link>
      <guid>https://forem.com/shaikhkamran/best-way-to-get-job-as-a-fresher-web-developer-in-2025-4dba</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gk5bbn6i2scwcho9xdj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gk5bbn6i2scwcho9xdj.jpg" alt="Fresher Web Developer" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Breaking into the web development field as a fresher can be exciting but challenging. The market is saturated with talented developers, making it crucial to stand out from the crowd. Here’s how you can enhance your chances of landing a great job as a web developer:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Understand the Competition&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The tech industry is booming, and with that comes fierce competition. Companies receive hundreds of applications for entry-level roles, many from candidates with similar skills. The key to standing out is showcasing your practical knowledge and a knack for problem-solving. Employers look for developers who can not only code but also demonstrate creativity and initiative.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Build and Share Your Web Apps&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the best ways to prove your skills is by building real-world projects. These projects act as a practical portfolio, giving hiring managers insight into your abilities. Follow these steps to create and share your work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose a Project Idea&lt;/strong&gt;: Think of projects that solve real-world problems or demonstrate specific skills. Examples include task managers, e-commerce websites, or chat applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use GitHub&lt;/strong&gt;: As you develop your apps, share the code on GitHub. This not only shows your coding skills but also highlights your familiarity with version control systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write Clean Code&lt;/strong&gt;: Employers will often look at the quality of your code. Make sure it’s clean, well-documented, and adheres to best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Stand Out with Unique Projects&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While building common projects like e-commerce sites and chat apps is beneficial, creating unique and innovative projects can help you capture the attention of interviewers. Unusual or creative projects demonstrate your ability to think outside the box and tackle unconventional challenges. Here are some ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gamified Habit Tracker&lt;/strong&gt;: A tool that turns daily habits into a game with rewards and progress tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neighborhood Marketplace&lt;/strong&gt;: A platform for local communities to buy, sell, or exchange goods and services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eco-Friendly Trip Planner&lt;/strong&gt;: An app that suggests travel plans with the lowest carbon footprint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized Recipe Generator&lt;/strong&gt;: A site that recommends recipes based on available ingredients and dietary preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Resume Builder&lt;/strong&gt;: A web app that uses AI to help users craft professional resumes.
These projects showcase your creativity and problem-solving skills, making you a more attractive candidate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deploy Your Projects&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Don’t just keep your apps in your local environment; make them live for the world to see. Platforms like Render, Netlify, and Vercel offer free hosting solutions for developers. Here’s how to leverage them:&lt;/p&gt;

&lt;p&gt;Deploy your applications to these platforms.&lt;br&gt;
Add the live links to your resume and LinkedIn profile.&lt;br&gt;
Share these projects during interviews to make a strong impression.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Showcase Your Work on LinkedIn&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;LinkedIn is a powerful platform for professionals, and showcasing your projects there can significantly increase your visibility. Follow these tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write posts about your projects, explaining the problem they solve and the technologies used.&lt;/li&gt;
&lt;li&gt;Share screenshots or demo videos of your applications.&lt;/li&gt;
&lt;li&gt;Engage with the developer community by commenting on and sharing relevant content.&lt;/li&gt;
&lt;li&gt;A strong presence on LinkedIn can attract recruiters and help you network with professionals in the industry.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Explore Project Ideas with “The Coders Bakery”&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you’re unsure about where to start, &lt;a href="//thecodersbakery.com"&gt;“The Coders Bakery” (TCB)&lt;/a&gt; can help you get going with boilerplate code for your web apps. By using TCB, you can focus on adding unique features to your project instead of spending hours on boilerplate code.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Project Ideas to Kickstart Your Portfolio&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here are some project ideas you can build using TCB:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personal Finance Tracker: A web app to manage expenses and savings.&lt;/li&gt;
&lt;li&gt;Online Learning Platform: Enable users to access courses and track progress.&lt;/li&gt;
&lt;li&gt;Event Management System: A platform for managing invitations and RSVPs.&lt;/li&gt;
&lt;li&gt;Real-Time Chat App: Build a messaging system using WebSockets.&lt;/li&gt;
&lt;li&gt;AI-Powered Resume Builder: A tool for crafting resumes dynamically using AI.&lt;/li&gt;
&lt;li&gt;Eco-Friendly Trip Planner: Suggest sustainable travel plans for users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These apps demonstrate a range of skills and can be customized to show off your creativity.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Focus on Presentation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Finally, make your resume and portfolio visually appealing and easy to navigate. Use a professional tone and organize your projects to emphasize their unique features.&lt;/p&gt;

&lt;p&gt;By building practical projects, deploying them online, showcasing them on platforms like LinkedIn, and leveraging tools like “The Coders Bakery,” you’ll showcase your skills effectively. This approach will significantly improve your chances of landing that dream job in web development. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Make your Node JS App Faster.</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Tue, 20 Sep 2022 13:10:09 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/make-your-node-js-app-faster-4k0a</link>
      <guid>https://forem.com/shaikhkamran/make-your-node-js-app-faster-4k0a</guid>
      <description>&lt;p&gt;Your manager is shouting at you to improve your Node js performance but you are stuck. You either want to quit your job or hit your manager's head with a brick. Please don't do either. In this post I am going to tell you how you can improve your Nodejs application performance.&lt;/p&gt;

&lt;p&gt;If you are lazy to read, i also have &lt;a href="https://youtu.be/mhJPQ-GCgeo" rel="noopener noreferrer"&gt;video &lt;/a&gt;for same topic.&lt;/p&gt;

&lt;p&gt;Application's performance has always been a challenge for any developer in any programming language.You can define a good developer as a developer who can develop most efficient or best performing applications and in case of web development applications, the more number of I/O the application can handle, the better performant is the application.So we have to build applications which can handle a lot of i/o smoothly and without any delay.&lt;/p&gt;

&lt;p&gt;First let's try to understand the potential reason for the lag or the inefficiency. As we know behind the scenes Node js has this awesome event loop which helps nodejs to run multiple tasks at once very smoothly, so how exactly node js slows down. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lym9ggs85j0nqk5ljch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lym9ggs85j0nqk5ljch.png" alt="Event Loop"&gt;&lt;/a&gt;&lt;br&gt;
If we dive deep in event loop phases we see that the poll phase can be the reason for slowness sometimes if the I/O is too big to be executed. Yeah it's possible that if we do some CPU intensive work, the poll phase may take more time and your whole application slows down. It is not a big deal. Large scale applications sometimes face this issue. So let's talk about how we can handle these scenarios in node JS applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom0cykwntju7c82p5pwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom0cykwntju7c82p5pwe.png" alt="Poll phase in Event Loop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The best solution which I always recommend and I also personally use is using "Worker thread". Yeah I know that Node JS is a single threaded framework, so we are not going to actually use multithreading over here. Instead of that we are going to spin up some worker threads which will be running on a separate event loop. This new event loop will be completely isolated from the main event loop and any kind of CPU intensive work we are going to offload to this thread. Now let's try to take an example where we can create a new worker thread and we'll try to understand how you can implement the same in your application.Same implementation I have already done in of one of my YouTube videos, so, if you are a video kind of person then you can check out my video on my YouTube channel.&lt;/p&gt;

&lt;p&gt;Let's talk about the example, we are going to create a main script where our main thread will be running and we are going to create another script where we are going to do some CPU intensive work and then we are going to run this separate script in a separate worker thread. Let's start step by step how we can create a worker thread and how we can offload our work to that thread.&lt;br&gt;
We will create a main.js in which I am going to listen to a single API and also we are going to create a separate module in which we are going to do do a CPU intensive work which will be calculating a Factorial of a given number as we all know calculating factorials takes up a lot of CPU.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const http = require('http');

async function init() {

    const port = process.env.PORT;
    const app = express();

    const httpsServer = http.Server(app);

    app.get('/', (req, res, next) =&amp;gt; {
        //do stuffs
        res.json({ message: "All good" })
    });

    httpsServer.listen(port, () =&amp;gt; {
        logger.info(`App listening on port ${port}`);
    });

}

init();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets create a module for factorial&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = (number) =&amp;gt; {
    const getFactorial = (number) =&amp;gt; {
        if (number === 1) return 1
        return number * getFactorial(number - 1);
    }
    return getFactorial(number);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the traditional method is we import factorial js in main js and use it in the api response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const getFactorial = require('./factorial');
app.get('/', (req, res, next) =&amp;gt; {
    const number = req.query.number;
    res.json({ message: "All good" });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case when numbers are bigger, the process will take up time and block other processes, and that's what we don't want. So we will create a worker thread.&lt;/p&gt;

&lt;p&gt;Lets create a new worker thread and do calculations in that, creating a worker is simple, You have to create a separate file for the worker and use that file to create a worker instance in any file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { Worker } = require('worker_threads');
const worker = new Worker('myworkerthread.js');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your worker file will be simple script where direct logic will be written.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const getFactorial = (number) =&amp;gt; {
    if (number === 1) return 1
    return number * getFactorial(number - 1);
}
getFactorial(number);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if we want to share data between this worker thread and the main thread, we can share data by emitting messages.&lt;br&gt;
To emit messages to worker thread from parent thread&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;worker.postMessage(message);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To emit messages to parent thread from worker thread&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { parentPort } = require('worker_threads');
parentPort.postMessage(message);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have to listen for parent Messages in the worker thread and for worker messages in parent thread. We have dedicated ports to listen to these emitted messages.&lt;br&gt;
To listen worker message in parent thread&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;worker.on('message', (message) =&amp;gt; {
    console.log("Worker Message", message);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To listen parent message in worker thread&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { parentPort } = require('worker_threads');
parentPort.on('message', (message) =&amp;gt; {
    console.log("Parent Message", message);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally your main.js will look like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const http = require('http');
const { Worker } = require('worker_threads');
async function init() {
    const port = process.env.PORT;
    const app = express();
    const factorialworker = new Worker('./factorial.js');
    const httpsServer = http.Server(app);
    app.get('/', (req, res, next) =&amp;gt; {
        const number = req.query.number;
        factorialworker.postMessage(number);
        res.json({ message: "All good" });
    });
    factorialworker.on('message', (data) =&amp;gt; {
        console.log("Here is your factorial", data);
    })
    httpsServer.listen(port, () =&amp;gt; {
        logger.info(`App listening on port ${port}`);
    });
}
init();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you factorial.js will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { parentPort } = require('worker_threads')
const getFactorial = (number) =&amp;gt; {
    if (number === 1) return 1
    return number * getFactorial(number - 1);
}
parentPort.on('message', (number) =&amp;gt; {
    parentPort.postMessage(getFactorial(number))
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git REpo for Code: &lt;a href="https://github.com/shaikh-kamran/nodejs-worker-thread-example" rel="noopener noreferrer"&gt;https://github.com/shaikh-kamran/nodejs-worker-thread-example&lt;/a&gt;&lt;br&gt;
Hope this blog helps you understand the implementation of worker thread in Node js application, &lt;br&gt;
Happy Koding everyone!!!&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Beginner's Guide: Working with Async NodeJS</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Wed, 07 Sep 2022 11:56:24 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/working-with-async-nodejs-38ff</link>
      <guid>https://forem.com/shaikhkamran/working-with-async-nodejs-38ff</guid>
      <description>&lt;p&gt;&lt;strong&gt;Node JS&lt;/strong&gt; can be confusing for any beginner or for those who are coming from any other programming language. Most developers find it difficult to understand the flow of code in node js scripts. In this post i am gonna make it super simple to understand how a piece of code runs in Node JS script.&lt;/p&gt;

&lt;p&gt;Node JS is an asynchronous event-driven JavaScript runtime environment designed to build scalable network applications.Here we will talk about Asynchronous, what is asynchronous and why it matters.Asynchronous in a single term can be defined as Non-blocking that means, anything you write in Node js scripts will be non blocking. Breaking it more granular, it means that if you have 5 lines of code in your script and you run it. Even if the 1st line is taking time to execute, node js will move to the second line without being blocked and that’s the reason Node js is so fast and famous. So basically node js is unstoppable like Sir Rajnikant 😉.&lt;/p&gt;

&lt;p&gt;The reason behind this Non-blocking behavior is the Beautiful event loop running behind the scenes in Node JS. Without getting much in details, the event loop can be explained as a watchman which keeps an eye on every command given to node js and put it in action. Here commands are each line of code. Event put all the line of code to action even if previous line is not completed yet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VNWsZhBP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klureqcmy5bpc54ues95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VNWsZhBP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klureqcmy5bpc54ues95.png" alt="Event Loop" width="880" height="412"&gt;&lt;/a&gt;&lt;br&gt;
There are situations where we don’t want this ‘Async’ behavior and the best example of that is when we make an api call, in that case we want the result from the api call and then we want to go to the next line to process the response further. We have multiple options to handle these situations in node js or in js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First Method&lt;/strong&gt;: The first and the oldest way is the call backs, callbacks are functions which we trigger once we are done with our first function. In simple words, let’s say you have two lines of code and you want to execute the second line only after the first line is completed. And the first line is taking time as it is dependent on some other functions, what you can do is wrap the second line in a function and pass this function to line 1 function itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7GWE5msy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/twuew9io3ncodfmht52s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7GWE5msy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/twuew9io3ncodfmht52s.png" alt="Callback" width="700" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If i want to make an api call and then after that using the response i want to build a json on that response. So I make a function of the process of creating a json and pass that function to the api and ask that api to call that function once you are done. I have made a &lt;a href="https://youtu.be/VVTwRCthMso"&gt;video&lt;/a&gt; explaining and coding the same, you can check same for better understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second Method&lt;/strong&gt;: The cooler and prettier way to handle any async situation is a promise. In the simplest words I can explain, a promise is an object which you can tell what to do after you are done with your work. We can tell promise two different outputs in case of success and failure of the main function.&lt;/p&gt;

&lt;p&gt;A Promise can be in one of these states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pending: initial state, neither fulfilled nor rejected.&lt;/li&gt;
&lt;li&gt;fulfilled: meaning that the operation was completed successfully.&lt;/li&gt;
&lt;li&gt;rejected: meaning that the operation failed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8f1c8d5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdgh81nzfug6y9aflmya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8f1c8d5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdgh81nzfug6y9aflmya.png" alt="Promise" width="700" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, if you are calling an api, in that case, your api should be a promise and you can tell the promise, what you want to do if your api runs successfully or what you want to do if it fails. I have made a &lt;a href="https://youtu.be/zoJSIGO0trk"&gt;video&lt;/a&gt; explaining and coding the same, you can check same for better understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third Method&lt;/strong&gt;: The cleanest way of handling async node js is “async await”. In this method you just don’t pass what you want to do after completion of the current function, you stop the compiler on the given line and wait until it gets completed. This waiting is done inside a function and that function should be explicitly async, that’s why this name came as “Async Await”. Although, in the newest version of node js, “Async” function is not required to await on a particular line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1xGsEL5p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/19wiq7bb02j6fpvf17qr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xGsEL5p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/19wiq7bb02j6fpvf17qr.png" alt="Async Await" width="700" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now explaining this with an example: if you are calling an api, in that case, your api should be a promise and you can tell this calling to wait at this line until you get the response and then go to the next line where you can play with the response. I have made a &lt;a href="https://youtu.be/mliu_aT64v0"&gt;video&lt;/a&gt; explaining and coding the same, you can check the same for better understanding.&lt;/p&gt;

&lt;p&gt;Hope you understood how you can deal with async node js with this blog. Do follow me for more content and do checkout my &lt;a href="https://www.youtube.com/channel/UClAF60JODGbZKoyREtl6S5A"&gt;YT channel&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Modules in Node JS</title>
      <dc:creator>kamran</dc:creator>
      <pubDate>Wed, 17 Aug 2022 12:13:00 +0000</pubDate>
      <link>https://forem.com/shaikhkamran/modules-in-node-js-34ce</link>
      <guid>https://forem.com/shaikhkamran/modules-in-node-js-34ce</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgspAVbS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ki69nejczbq5lqm7e5a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgspAVbS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ki69nejczbq5lqm7e5a.jpg" alt="Code With Modules" width="880" height="587"&gt;&lt;/a&gt;&lt;br&gt;
If you are moving to a new house, packing and moving your stuff is always a headache. To avoid the complexity and burden of moving, you can always keep your home stuff sorted and organized and when you want to move, you can simply put similar kinds of stuff in the same moving boxes. You can name the boxes according to what it contains and that will help you pack and unpack effortlessly. This technique will help you be organized and all your stuff will be easily reachable as you know where exactly to find them.&lt;/p&gt;

&lt;p&gt;Same goes for software applications, in order to make your application easy to access and organize, you have to pack them properly in boxes and name them conveniently. In Node JS, these boxes are known as "Modules". So now you know why exactly we use modules, let's dive more into this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9nt_25b_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfc5a6smeht49jp82swv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9nt_25b_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfc5a6smeht49jp82swv.jpg" alt="Node JS Project with Modules" width="880" height="702"&gt;&lt;/a&gt;&lt;br&gt;
Basically modules are objects which may contain one or more properties and the best part of a module is you can export and import modules from one file to another and in that manner you can beautifully arrange all the content of your application in a systematic and organized manner.&lt;/p&gt;

&lt;p&gt;Node JS come with pre installed modules which you can use for doing the basic tasks in your application like http module which can be use to handle the http server and it also have a filesystem module which you can use to play around with files and folder in your application.When you install node.js in your system these pre-installed modules are installed by default and when you want to use it you can simply import and use it.&lt;/p&gt;

&lt;p&gt;You can also create your own module in a Node JS application. Once you create a module you can export it and then you can import it in another file to use it. You can also share that created module with other users to use that and they can use that module in their application, so, basically module can be treated as a box which you can wrap the functionality within and give it to others as well to be used and all the the functionalities in that box can be used by any other user.&lt;/p&gt;

&lt;p&gt;A good example of this will be, you can create a class as a module and export that and then Import that class in any file you want. You can also export multiple objects from a single module and then use that module as an imported object in another file.&lt;/p&gt;

&lt;p&gt;Apart from the inbuilt modules and self created modules, you also have external modules available in node package manager which you can install and import in your application and use the external functionality in your application. So you can see how modules made your life easy in building your application you don't have to to build each and every thing in order to build your application you can simply import the module from other packages and then you can use that and build your application on top of that.&lt;/p&gt;

&lt;p&gt;I have also created a &lt;a href="https://youtu.be/9R3_gUnd_1s"&gt;video &lt;/a&gt;on how to work with modules in node JS and I hope this video will help you to understand the basic concepts of modules with actual coding.&lt;/p&gt;

&lt;p&gt;Thanks for reading, happy Koding everyone!!&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
