<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Morshedul Munna</title>
    <description>The latest articles on DEV Community by Morshedul Munna (@morshedulmunna).</description>
    <link>https://dev.to/morshedulmunna</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F898559%2F24768b36-967f-4970-ad4f-899a594664b6.png</url>
      <title>DEV Community: Morshedul Munna</title>
      <link>https://dev.to/morshedulmunna</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/morshedulmunna"/>
    <language>en</language>
    <item>
      <title>Why I Built Ironic: Bringing Enterprise Application Architecture to Rust Without Hiding Rust</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Mon, 27 Jul 2026 04:27:19 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/why-i-built-ironic-bringing-enterprise-application-architecture-to-rust-without-hiding-rust-48f9</link>
      <guid>https://dev.to/morshedulmunna/why-i-built-ironic-bringing-enterprise-application-architecture-to-rust-without-hiding-rust-48f9</guid>
      <description>&lt;h1&gt;
  
  
  Why I Built &lt;strong&gt;Ironic&lt;/strong&gt;: Bringing Enterprise Application Architecture to Rust Without Hiding Rust
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rust already has amazing web frameworks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So why build another one?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a fair question.&lt;/p&gt;

&lt;p&gt;When I started working with Rust professionally, I wasn't looking for a new HTTP framework.&lt;/p&gt;

&lt;p&gt;Axum was already excellent.&lt;/p&gt;

&lt;p&gt;Tokio handled asynchronous execution beautifully.&lt;/p&gt;

&lt;p&gt;Tower provided an elegant middleware ecosystem.&lt;/p&gt;

&lt;p&gt;SQLx gave me compile-time checked queries.&lt;/p&gt;

&lt;p&gt;The ecosystem wasn't missing another router.&lt;/p&gt;

&lt;p&gt;What I kept missing was &lt;strong&gt;application architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After building backend systems ranging from small REST APIs to distributed microservices, I noticed something interesting.&lt;/p&gt;

&lt;p&gt;Every new project started differently.&lt;/p&gt;

&lt;p&gt;Every mature project eventually looked almost identical.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Hidden Cost of Starting From Scratch
&lt;/h1&gt;

&lt;p&gt;Creating a new Rust API is easy.&lt;/p&gt;

&lt;p&gt;Creating a backend that survives three years of development is a completely different challenge.&lt;/p&gt;

&lt;p&gt;The first week usually looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
 ├── main.rs
 ├── routes.rs
 ├── handlers.rs
 ├── services.rs
 └── models.rs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;Clean.&lt;/p&gt;

&lt;p&gt;Everyone is happy.&lt;/p&gt;

&lt;p&gt;Three months later...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
 ├── auth/
 ├── users/
 ├── orders/
 ├── billing/
 ├── notification/
 ├── middleware/
 ├── config/
 ├── telemetry/
 ├── cache/
 ├── jobs/
 ├── events/
 ├── permissions/
 ├── validation/
 ├── metrics/
 ├── errors/
 └── ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the difficult questions appear.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where should dependencies live?&lt;/li&gt;
&lt;li&gt;How should features communicate?&lt;/li&gt;
&lt;li&gt;Where does authentication belong?&lt;/li&gt;
&lt;li&gt;How do background workers access shared services?&lt;/li&gt;
&lt;li&gt;How should modules be organized?&lt;/li&gt;
&lt;li&gt;How do we avoid circular dependencies?&lt;/li&gt;
&lt;li&gt;How do multiple developers work without stepping on each other?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these problems are about HTTP.&lt;/p&gt;

&lt;p&gt;They're architecture problems.&lt;/p&gt;




&lt;h1&gt;
  
  
  Rust Gives You Building Blocks, Not a Building
&lt;/h1&gt;

&lt;p&gt;One of Rust's greatest strengths is that it stays out of your way.&lt;/p&gt;

&lt;p&gt;It doesn't force a project structure.&lt;/p&gt;

&lt;p&gt;It doesn't prescribe dependency injection.&lt;/p&gt;

&lt;p&gt;It doesn't dictate application architecture.&lt;/p&gt;

&lt;p&gt;That's fantastic for flexibility.&lt;/p&gt;

&lt;p&gt;It's less fantastic when five engineers each organize the project differently.&lt;/p&gt;

&lt;p&gt;The Rust ecosystem intentionally provides powerful primitives.&lt;/p&gt;

&lt;p&gt;But enterprise applications usually require conventions.&lt;/p&gt;

&lt;p&gt;Without conventions, every team reinvents the same solutions.&lt;/p&gt;




&lt;h1&gt;
  
  
  Every Company Eventually Builds Its Own Framework
&lt;/h1&gt;

&lt;p&gt;After enough projects, I noticed a pattern.&lt;/p&gt;

&lt;p&gt;Every backend team slowly accumulates infrastructure.&lt;/p&gt;

&lt;p&gt;Week after week, project after project, they build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration loading&lt;/li&gt;
&lt;li&gt;Dependency wiring&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Health checks&lt;/li&gt;
&lt;li&gt;OpenAPI&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;li&gt;Background jobs&lt;/li&gt;
&lt;li&gt;Event publishing&lt;/li&gt;
&lt;li&gt;Testing utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually they stop writing business logic.&lt;/p&gt;

&lt;p&gt;They're rebuilding their internal platform.&lt;/p&gt;

&lt;p&gt;I've seen this happen repeatedly.&lt;/p&gt;

&lt;p&gt;The framework simply lives inside the company's repositories instead of being published.&lt;/p&gt;

&lt;p&gt;I decided to make mine public.&lt;/p&gt;

&lt;p&gt;That's how &lt;strong&gt;Ironic&lt;/strong&gt; started.&lt;/p&gt;




&lt;h1&gt;
  
  
  I Didn't Want to Replace Axum
&lt;/h1&gt;

&lt;p&gt;One misconception about Ironic is that it's trying to compete with Axum.&lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;Axum is already one of the best HTTP frameworks available.&lt;/p&gt;

&lt;p&gt;Instead, Ironic treats Axum as infrastructure.&lt;/p&gt;

&lt;p&gt;Think of the stack like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
     │
 Ironic
     │
  Axum
     │
 Hyper
     │
 Tokio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Axum solves networking.&lt;/p&gt;

&lt;p&gt;Ironic solves application organization.&lt;/p&gt;

&lt;p&gt;Those are different responsibilities.&lt;/p&gt;




&lt;h1&gt;
  
  
  Inspired by NestJS, Designed for Rust
&lt;/h1&gt;

&lt;p&gt;Developers coming from Node.js often ask me whether Ironic is "NestJS for Rust."&lt;/p&gt;

&lt;p&gt;The answer is both yes and no.&lt;/p&gt;

&lt;p&gt;NestJS influenced the developer experience.&lt;/p&gt;

&lt;p&gt;It did &lt;strong&gt;not&lt;/strong&gt; influence the implementation.&lt;/p&gt;

&lt;p&gt;NestJS relies heavily on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runtime reflection&lt;/li&gt;
&lt;li&gt;metadata inspection&lt;/li&gt;
&lt;li&gt;decorators&lt;/li&gt;
&lt;li&gt;dynamic dependency containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rust doesn't have those capabilities.&lt;/p&gt;

&lt;p&gt;More importantly...&lt;/p&gt;

&lt;p&gt;Rust doesn't need them.&lt;/p&gt;

&lt;p&gt;Instead, Ironic uses procedural macros and compile-time code generation where possible, preserving Rust's ownership model instead of replacing it with runtime magic.&lt;/p&gt;

&lt;p&gt;The goal was never to make Rust behave like TypeScript.&lt;/p&gt;

&lt;p&gt;The goal was to make large Rust applications easier to organize.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Modules Matter More Than Routers
&lt;/h1&gt;

&lt;p&gt;In small applications, routing feels like the center of the project.&lt;/p&gt;

&lt;p&gt;In large applications, routing becomes almost irrelevant.&lt;/p&gt;

&lt;p&gt;Features become the real units of organization.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which file contains this endpoint?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You begin asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which business capability owns this functionality?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's why Ironic encourages applications to be organized around modules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Auth
Users
Orders
Payments
Inventory
Notifications
Analytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each module owns its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Controllers&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Repositories&lt;/li&gt;
&lt;li&gt;DTOs&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps business logic cohesive instead of scattering it across the project.&lt;/p&gt;




&lt;h1&gt;
  
  
  Dependency Injection Isn't About Magic
&lt;/h1&gt;

&lt;p&gt;Dependency injection has developed a bad reputation in some communities.&lt;/p&gt;

&lt;p&gt;Mostly because many frameworks hide everything behind reflection.&lt;/p&gt;

&lt;p&gt;I don't think dependency injection is the problem.&lt;/p&gt;

&lt;p&gt;Hidden dependencies are.&lt;/p&gt;

&lt;p&gt;A service should explicitly declare what it needs.&lt;/p&gt;

&lt;p&gt;The framework should simply remove repetitive wiring.&lt;/p&gt;

&lt;p&gt;If you still understand ownership, lifetimes, and trait boundaries, then Rust hasn't disappeared.&lt;/p&gt;

&lt;p&gt;That's exactly the balance I wanted.&lt;/p&gt;




&lt;h1&gt;
  
  
  Enterprise Software Isn't Just CRUD
&lt;/h1&gt;

&lt;p&gt;Most tutorials build the same application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /users

POST /users

DELETE /users
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real systems are much more complicated.&lt;/p&gt;

&lt;p&gt;A payment might trigger:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database transaction&lt;/li&gt;
&lt;li&gt;Cache invalidation&lt;/li&gt;
&lt;li&gt;Event publication&lt;/li&gt;
&lt;li&gt;Email notification&lt;/li&gt;
&lt;li&gt;Audit logging&lt;/li&gt;
&lt;li&gt;Analytics update&lt;/li&gt;
&lt;li&gt;Background reconciliation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suddenly you're dealing with distributed concerns rather than HTTP handlers.&lt;/p&gt;

&lt;p&gt;Architecture becomes far more important than routing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Compile-Time Matters
&lt;/h1&gt;

&lt;p&gt;One design principle guided almost every decision.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Rust can verify something at compile time, it should.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Compile-time guarantees make large systems easier to maintain.&lt;/p&gt;

&lt;p&gt;They reduce runtime surprises.&lt;/p&gt;

&lt;p&gt;They improve refactoring confidence.&lt;/p&gt;

&lt;p&gt;They make teams move faster without sacrificing reliability.&lt;/p&gt;

&lt;p&gt;Rather than introducing runtime containers or reflection, I wanted Ironic to embrace Rust's philosophy.&lt;/p&gt;

&lt;p&gt;Explicit where it matters.&lt;/p&gt;

&lt;p&gt;Convenient where repetition exists.&lt;/p&gt;




&lt;h1&gt;
  
  
  Building for Teams, Not Tutorials
&lt;/h1&gt;

&lt;p&gt;Many frameworks optimize for the first hour.&lt;/p&gt;

&lt;p&gt;I wanted to optimize for the third year.&lt;/p&gt;

&lt;p&gt;Questions I kept asking myself included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can ten developers work on this project independently?&lt;/li&gt;
&lt;li&gt;Will new engineers understand the project quickly?&lt;/li&gt;
&lt;li&gt;Is each feature isolated?&lt;/li&gt;
&lt;li&gt;Can modules evolve independently?&lt;/li&gt;
&lt;li&gt;Does the architecture encourage good boundaries?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions shaped the framework far more than benchmark numbers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Performance Was Never the Primary Goal
&lt;/h1&gt;

&lt;p&gt;Rust is already fast.&lt;/p&gt;

&lt;p&gt;Axum is already fast.&lt;/p&gt;

&lt;p&gt;Tokio is already fast.&lt;/p&gt;

&lt;p&gt;Saving another few microseconds rarely determines project success.&lt;/p&gt;

&lt;p&gt;Developer productivity does.&lt;/p&gt;

&lt;p&gt;Maintainability does.&lt;/p&gt;

&lt;p&gt;Consistency does.&lt;/p&gt;

&lt;p&gt;If a framework helps engineers spend less time wiring infrastructure and more time building business logic, that's often a much bigger win than shaving another 2% off request latency.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where I Think Rust Backend Development Is Going
&lt;/h1&gt;

&lt;p&gt;The Rust ecosystem is maturing rapidly.&lt;/p&gt;

&lt;p&gt;Five years ago, people asked whether Rust was suitable for web development.&lt;/p&gt;

&lt;p&gt;Today that's no longer the debate.&lt;/p&gt;

&lt;p&gt;The next challenge is improving developer experience for large applications without sacrificing the qualities that make Rust unique.&lt;/p&gt;

&lt;p&gt;I believe the future isn't about hiding Rust.&lt;/p&gt;

&lt;p&gt;It's about embracing Rust while removing unnecessary repetition.&lt;/p&gt;

&lt;p&gt;That's the philosophy behind Ironic.&lt;/p&gt;

&lt;p&gt;Not replacing Axum.&lt;/p&gt;

&lt;p&gt;Not replacing Tokio.&lt;/p&gt;

&lt;p&gt;Not replacing the Rust ecosystem.&lt;/p&gt;

&lt;p&gt;Just making it easier to build backend systems that stay maintainable as they grow.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Ironic is still evolving, and I don't claim it has all the answers.&lt;/p&gt;

&lt;p&gt;But every design decision comes from solving the same problems repeatedly in production systems.&lt;/p&gt;

&lt;p&gt;If you've ever found yourself copying the same infrastructure into every new backend project, I'd love to hear your perspective.&lt;/p&gt;

&lt;p&gt;Maybe you've solved these problems differently.&lt;/p&gt;

&lt;p&gt;Maybe you disagree with some architectural choices.&lt;/p&gt;

&lt;p&gt;That's exactly the kind of discussion that helps the Rust ecosystem grow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📖 Documentation: &lt;a href="https://ironic-org.github.io/ironic" rel="noopener noreferrer"&gt;https://ironic-org.github.io/ironic&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⭐ GitHub: &lt;a href="https://github.com/ironic-org/ironic" rel="noopener noreferrer"&gt;https://github.com/ironic-org/ironic&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 Crates.io: &lt;a href="https://crates.io/crates/ironic" rel="noopener noreferrer"&gt;https://crates.io/crates/ironic&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested in modular Rust backends, distributed systems, or enterprise application architecture, I'd love your feedback and contributions.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>programming</category>
      <category>rust</category>
    </item>
    <item>
      <title>I Built a Rust Framework So Backend Development Feels Like NestJS—Without Sacrificing Rust</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Mon, 27 Jul 2026 04:23:31 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/i-built-a-rust-framework-so-backend-development-feels-like-nestjs-without-sacrificing-rust-2l9d</link>
      <guid>https://dev.to/morshedulmunna/i-built-a-rust-framework-so-backend-development-feels-like-nestjs-without-sacrificing-rust-2l9d</guid>
      <description>&lt;p&gt;If you've ever built APIs in Rust, you've probably noticed something.&lt;/p&gt;

&lt;p&gt;The ecosystem has incredible libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Axum&lt;/li&gt;
&lt;li&gt;Actix Web&lt;/li&gt;
&lt;li&gt;SQLx&lt;/li&gt;
&lt;li&gt;Tokio&lt;/li&gt;
&lt;li&gt;Tower&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But once your project grows, you end up wiring everything yourself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;user_service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;UserService&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;auth_service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;AuthService&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_service&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;.merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;auth_routes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth_service&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="nf"&gt;.merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;user_routes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_service&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is absolutely nothing wrong with explicit composition.&lt;/p&gt;

&lt;p&gt;In fact, that's one of Rust's strengths.&lt;/p&gt;

&lt;p&gt;But after building multiple production systems, I found myself writing the same infrastructure over and over again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependency wiring&lt;/li&gt;
&lt;li&gt;Module organization&lt;/li&gt;
&lt;li&gt;Configuration loading&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;OpenAPI&lt;/li&gt;
&lt;li&gt;Background jobs&lt;/li&gt;
&lt;li&gt;Event handling&lt;/li&gt;
&lt;li&gt;CLI tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually I stopped asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do I build another backend?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead I asked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why am I rebuilding the backend infrastructure every single project?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's how &lt;strong&gt;Ironic&lt;/strong&gt; was born.&lt;/p&gt;




&lt;h1&gt;
  
  
  Rust Doesn't Need Another Web Framework
&lt;/h1&gt;

&lt;p&gt;Rust already has excellent web frameworks.&lt;/p&gt;

&lt;p&gt;Axum is fantastic.&lt;/p&gt;

&lt;p&gt;Actix is battle-tested.&lt;/p&gt;

&lt;p&gt;Warp is powerful.&lt;/p&gt;

&lt;p&gt;Rocket is beginner friendly.&lt;/p&gt;

&lt;p&gt;Ironic isn't trying to replace them.&lt;/p&gt;

&lt;p&gt;Instead, it sits on top of Axum and focuses on application architecture rather than HTTP routing.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tokio
   ↓
Hyper
   ↓
Axum
   ↓
Ironic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Axum solves HTTP.&lt;/p&gt;

&lt;p&gt;Ironic solves application structure.&lt;/p&gt;




&lt;h1&gt;
  
  
  Inspired by NestJS, Built the Rust Way
&lt;/h1&gt;

&lt;p&gt;One thing I always appreciated about NestJS was its organization.&lt;/p&gt;

&lt;p&gt;Projects naturally evolve into modules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users
Orders
Payments
Notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each feature owns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Controllers&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Repositories&lt;/li&gt;
&lt;li&gt;DTOs&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That scales surprisingly well.&lt;/p&gt;

&lt;p&gt;I wanted the same developer experience in Rust—but without introducing runtime reflection, decorators, or dynamic containers.&lt;/p&gt;

&lt;p&gt;Rust deserves compile-time safety.&lt;/p&gt;

&lt;p&gt;So Ironic uses procedural macros and compile-time metadata instead of runtime magic.&lt;/p&gt;




&lt;h1&gt;
  
  
  Modules Become the Building Blocks
&lt;/h1&gt;

&lt;p&gt;Instead of dumping everything into &lt;code&gt;main.rs&lt;/code&gt;, applications are composed from modules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AuthModule
UserModule
PaymentModule
NotificationModule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each module explicitly defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imports&lt;/li&gt;
&lt;li&gt;providers&lt;/li&gt;
&lt;li&gt;controllers&lt;/li&gt;
&lt;li&gt;exports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large applications become easier to reason about because dependencies are visible instead of scattered across startup code.&lt;/p&gt;




&lt;h1&gt;
  
  
  Dependency Injection Without Reflection
&lt;/h1&gt;

&lt;p&gt;Many developers hear "dependency injection" and immediately think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reflection.&lt;/p&gt;

&lt;p&gt;Runtime containers.&lt;/p&gt;

&lt;p&gt;Hidden magic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Rust doesn't need that.&lt;/p&gt;

&lt;p&gt;Ironic performs dependency resolution while preserving Rust's ownership model.&lt;/p&gt;

&lt;p&gt;Services remain ordinary Rust structs.&lt;/p&gt;

&lt;p&gt;No runtime reflection.&lt;/p&gt;

&lt;p&gt;No hidden object graphs.&lt;/p&gt;

&lt;p&gt;Just cleaner composition.&lt;/p&gt;




&lt;h1&gt;
  
  
  Batteries Included
&lt;/h1&gt;

&lt;p&gt;Modern APIs require much more than routing.&lt;/p&gt;

&lt;p&gt;Typical production projects eventually need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAPI generation&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Background jobs&lt;/li&gt;
&lt;li&gt;Event publishing&lt;/li&gt;
&lt;li&gt;Health checks&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;li&gt;Testing utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most Rust projects assemble these piece by piece.&lt;/p&gt;

&lt;p&gt;Ironic aims to provide these capabilities under one consistent programming model so developers spend more time building business logic instead of infrastructure.&lt;/p&gt;




&lt;h1&gt;
  
  
  Familiar for Backend Developers
&lt;/h1&gt;

&lt;p&gt;Developers coming from NestJS often recognize concepts immediately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="err"&gt;↓&lt;/span&gt;

&lt;span class="nx"&gt;Module&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="err"&gt;↓&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Injectable&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="err"&gt;↓&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;injectable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal isn't to copy another framework.&lt;/p&gt;

&lt;p&gt;The goal is to reduce the learning curve for backend engineers moving into Rust.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why I Built This
&lt;/h1&gt;

&lt;p&gt;Over the last few years I've worked on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high-performance APIs&lt;/li&gt;
&lt;li&gt;distributed systems&lt;/li&gt;
&lt;li&gt;microservices&lt;/li&gt;
&lt;li&gt;cloud-native backend platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every project repeated the same architectural patterns.&lt;/p&gt;

&lt;p&gt;Eventually the framework became inevitable.&lt;/p&gt;

&lt;p&gt;I wanted something that lets teams focus on solving domain problems—not rebuilding application infrastructure.&lt;/p&gt;




&lt;h1&gt;
  
  
  Who Is Ironic For?
&lt;/h1&gt;

&lt;p&gt;Ironic is a good fit if you're building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SaaS platforms&lt;/li&gt;
&lt;li&gt;Enterprise APIs&lt;/li&gt;
&lt;li&gt;Microservices&lt;/li&gt;
&lt;li&gt;Internal developer platforms&lt;/li&gt;
&lt;li&gt;Large backend applications&lt;/li&gt;
&lt;li&gt;Teams with multiple backend developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building a tiny CRUD API, Axum alone is probably enough.&lt;/p&gt;

&lt;p&gt;If you're building a backend that will live for years, architecture starts to matter much more than routing.&lt;/p&gt;




&lt;h1&gt;
  
  
  What's Next?
&lt;/h1&gt;

&lt;p&gt;The project is still evolving, but the long-term vision is clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;production-ready developer tooling&lt;/li&gt;
&lt;li&gt;scalable modular architecture&lt;/li&gt;
&lt;li&gt;compile-time safety&lt;/li&gt;
&lt;li&gt;first-class testing&lt;/li&gt;
&lt;li&gt;cloud-native deployment&lt;/li&gt;
&lt;li&gt;an ecosystem that feels natural to Rust developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective has never been to hide Rust.&lt;/p&gt;

&lt;p&gt;It's to make large Rust applications easier to build, easier to maintain, and more enjoyable to work on.&lt;/p&gt;




&lt;p&gt;I'd love feedback from the Rust community.&lt;/p&gt;

&lt;p&gt;What architectural problems do you repeatedly solve in every backend project?&lt;/p&gt;

&lt;p&gt;Let's discuss.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📖 Documentation: &lt;a href="https://ironic-org.github.io/ironic" rel="noopener noreferrer"&gt;https://ironic-org.github.io/ironic&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 Crates.io: &lt;a href="https://crates.io/crates/ironic" rel="noopener noreferrer"&gt;https://crates.io/crates/ironic&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⭐ GitHub: &lt;a href="https://github.com/ironic-org/ironic" rel="noopener noreferrer"&gt;https://github.com/ironic-org/ironic&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>rust</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Common Deployment Strategies with Kubernetes</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Sat, 23 Nov 2024 10:50:50 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/common-deployment-strategies-with-kubernetes-5hf7</link>
      <guid>https://dev.to/morshedulmunna/common-deployment-strategies-with-kubernetes-5hf7</guid>
      <description>&lt;p&gt;Common Deployment Strategies with Kubernetes&lt;/p&gt;

&lt;p&gt;✡️ Recreate Deployment&lt;br&gt;
Replaces the old version with the new one by terminating all old pods before starting new ones.&lt;/p&gt;

&lt;p&gt;When to Use:&lt;br&gt;
➤ Use when zero downtime isn’t critical and a clean slate of application state is required. Not so common.&lt;/p&gt;

&lt;p&gt;Kubernetes Implementation:&lt;br&gt;
➤ Set strategy.type to Recreate in the deployment manifest.&lt;/p&gt;

&lt;p&gt;✡️ Rolling Deployment&lt;br&gt;
Gradually replaces old instances with new ones without downtime.&lt;/p&gt;

&lt;p&gt;When to Use:&lt;br&gt;
➤ Use when high availability is essential and gradual rollouts are needed to prevent downtime. This is the most common strategy.&lt;/p&gt;

&lt;p&gt;Kubernetes Implementation:&lt;br&gt;
➤ Default strategy in Kubernetes.&lt;br&gt;
➤ Controlled by maxSurge and maxUnavailable parameters in the deployment spec.&lt;/p&gt;

&lt;p&gt;✡️ Blue-Green Deployment&lt;br&gt;
Involves two environments (Blue for current, Green for new). Traffic switches to Green after testing, with easy rollback to Blue.&lt;/p&gt;

&lt;p&gt;When to Use:&lt;br&gt;
➤ When quick, risk-free rollback is needed if the new release fails.&lt;br&gt;
➤ For critical applications requiring stability and controlled validation before going live.&lt;/p&gt;

&lt;p&gt;Kubernetes Implementation:&lt;br&gt;
➤ Maintain separate deployments for Blue and Green environments.&lt;br&gt;
➤ Use Kubernetes services to route traffic between the two environments.&lt;/p&gt;

&lt;p&gt;✡️ Canary Deployment&lt;br&gt;
Gradually rolls out the new version by directing a small percentage of traffic to the canary while the rest goes to the stable version.&lt;/p&gt;

&lt;p&gt;When to Use:&lt;br&gt;
➤ Test new features with real traffic before a full rollout.&lt;br&gt;
➤ Ideal for feature flags and gradual rollouts to minimize user impact and catch issues early.&lt;/p&gt;

&lt;p&gt;Kubernetes Implementation:&lt;br&gt;
➤ Use multiple replica sets with a smaller number of canary pods.&lt;br&gt;
➤ Leverage Ingress, service meshes (Istio/Linkerd), or Argo CD for gradual rollouts.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Creating a real-time notification system</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Sun, 08 Sep 2024 05:09:15 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/creating-a-real-time-notification-system-178a</link>
      <guid>https://dev.to/morshedulmunna/creating-a-real-time-notification-system-178a</guid>
      <description>&lt;p&gt;Creating a real-time notification system involves setting up a server that can push notifications to clients as events occur. Using &lt;strong&gt;Express.js&lt;/strong&gt; for the backend server, &lt;strong&gt;MongoDB&lt;/strong&gt; for data storage, &lt;strong&gt;Socket.io&lt;/strong&gt; for real-time communication, and &lt;strong&gt;React&lt;/strong&gt; for the frontend provides a robust stack for building such a system.&lt;/p&gt;

&lt;p&gt;Below is a step-by-step guide to creating a notification system with these technologies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Prerequisites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting Up the Backend&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* [Initialize the Project](#initialize-the-project)

* [Set Up Express Server](#set-up-express-server)

* [Integrate Socket.io](#integrate-socketio)

* [Connect to MongoDB](#connect-to-mongodb)

* [Create Notification Schema](#create-notification-schema)

* [API Endpoints](#api-endpoints)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up the Frontend&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* [Initialize React App](#initialize-react-app)

* [Install Dependencies](#install-dependencies)

* [Set Up Socket.io Client](#set-up-socketio-client)

* [Display Notifications](#display-notifications)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Testing the Notification System&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conclusion&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node.js and npm&lt;/strong&gt; installed on your machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MongoDB&lt;/strong&gt; installed locally or have access to a MongoDB Atlas cluster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic knowledge of JavaScript, Node.js, Express.js, MongoDB, Socket.io, and React.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Setting Up the Backend
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Initialize the Project
&lt;/h3&gt;

&lt;p&gt;Create a new directory for your project and initialize it with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codemkdir notification-system
cd notification-system
npm init -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set Up Express Server
&lt;/h3&gt;

&lt;p&gt;Install Express and other necessary dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenpm install express cors mongoose socket.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create an &lt;code&gt;index.js&lt;/code&gt; file for your server:&lt;br&gt;
&lt;/p&gt;

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

const app = express();
app.use(cors());
app.use(express.json());

const server = http.createServer(app);

server.listen(5000, () =&amp;gt; {
  console.log('Server is running on port 5000');
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrate Socket.io
&lt;/h3&gt;

&lt;p&gt;Install Socket.io:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenpm install socket.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modify your &lt;code&gt;index.js&lt;/code&gt; to include Socket.io:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// index.js
const socketIo = require('socket.io');
const io = socketIo(server, {
  cors: {
    origin: 'http://localhost:3000', // React app domain
    methods: ['GET', 'POST'],
  },
});

io.on('connection', (socket) =&amp;gt; {
  console.log('New client connected');

  // Handle disconnection
  socket.on('disconnect', () =&amp;gt; {
    console.log('Client disconnected');
  });
});

// Export io for use in routes
module.exports = io;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Connect to MongoDB
&lt;/h3&gt;

&lt;p&gt;Install Mongoose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenpm install mongoose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update &lt;code&gt;index.js&lt;/code&gt; to connect to MongoDB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// index.js
const mongoose = require('mongoose');

mongoose
  .connect('mongodb://localhost:27017/notifications', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() =&amp;gt; console.log('MongoDB connected'))
  .catch((err) =&amp;gt; console.log(err));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create Notification Schema
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;models&lt;/code&gt; directory and add a &lt;code&gt;Notification.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// models/Notification.js
const mongoose = require('mongoose');

const NotificationSchema = new mongoose.Schema({
  message: String,
  date: { type: Date, default: Date.now },
});

module.exports = mongoose.model('Notification', NotificationSchema);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  API Endpoints
&lt;/h3&gt;

&lt;p&gt;Create a route to handle creating notifications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// routes/notifications.js
const express = require('express');
const router = express.Router();
const Notification = require('../models/Notification');
const io = require('../index'); // Import io instance

// Create a new notification
router.post('/', async (req, res) =&amp;gt; {
  const { message } = req.body;
  try {
    const notification = new Notification({ message });
    await notification.save();

    // Emit the notification to all connected clients
    io.emit('notification', notification);

    res.status(201).json(notification);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

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

&lt;/div&gt;



&lt;p&gt;Update &lt;code&gt;index.js&lt;/code&gt; to use the route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// index.js
const notificationRoutes = require('./routes/notifications');

app.use('/notifications', notificationRoutes);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Setting Up the Frontend
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Initialize React App
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;create-react-app&lt;/code&gt; to bootstrap your React application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenpx create-react-app client
cd client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Dependencies
&lt;/h3&gt;

&lt;p&gt;Install Socket.io client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenpm install socket.io-client axios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set Up Socket.io Client
&lt;/h3&gt;

&lt;p&gt;In your &lt;code&gt;App.js&lt;/code&gt;, set up the Socket.io client to listen for notifications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascriptCopy code// src/App.js
import React, { useEffect, useState } from 'react';
import socketIOClient from 'socket.io-client';
import axios from 'axios';

const ENDPOINT = 'http://localhost:5000';

function App() {
  const [notifications, setNotifications] = useState([]);

  useEffect(() =&amp;gt; {
    // Fetch existing notifications
    axios.get(`${ENDPOINT}/notifications`).then((response) =&amp;gt; {
      setNotifications(response.data);
    });

    // Set up Socket.io client
    const socket = socketIOClient(ENDPOINT);

    socket.on('notification', (data) =&amp;gt; {
      setNotifications((prevNotifications) =&amp;gt; [data, ...prevNotifications]);
    });

    // Clean up the connection when the component unmounts
    return () =&amp;gt; socket.disconnect();
  }, []);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;Notifications&amp;lt;/h1&amp;gt;
      {notifications.map((notif) =&amp;gt; (
        &amp;lt;div key={notif._id}&amp;gt;
          &amp;lt;p&amp;gt;{notif.message}&amp;lt;/p&amp;gt;
          &amp;lt;small&amp;gt;{new Date(notif.date).toLocaleString()}&amp;lt;/small&amp;gt;
        &amp;lt;/div&amp;gt;
      ))}
    &amp;lt;/div&amp;gt;
  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Display Notifications
&lt;/h3&gt;

&lt;p&gt;The above code in &lt;code&gt;App.js&lt;/code&gt; will display the list of notifications and update the list in real-time when a new notification is received.&lt;/p&gt;




&lt;h2&gt;
  
  
  Testing the Notification System
&lt;/h2&gt;

&lt;p&gt;To test the notification system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start the backend server&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codenode index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start the React app&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codecd client
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Send a notification&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Use a tool like Postman or &lt;code&gt;curl&lt;/code&gt; to send a POST request to the &lt;code&gt;/notifications&lt;/code&gt; endpoint:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bashCopy codecurl -X POST -H "Content-Type: application/json" -d '{"message": "New notification"}' http://localhost:5000/notifications
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Alternatively, you can create a simple form in your React app to send notifications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Observe the React app&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;The new notification should appear instantly in your React application without a page refresh.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;You've now set up a basic real-time notification system using Express.js, MongoDB, Socket.io, and React. This system can be expanded and customized to fit more complex use cases, such as user-specific notifications, different notification types, and persistent user sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: Implement user authentication to send notifications to specific users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Notification Types&lt;/strong&gt;: Categorize notifications and add filtering options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Persistent Connections&lt;/strong&gt;: Handle reconnection logic for Socket.io in case of network issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UI Enhancements&lt;/strong&gt;: Improve the frontend with better styling and user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express.js Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Socket.io Documentation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;React Documentation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>How to detect a click outside a React component</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Thu, 08 Dec 2022 17:46:54 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/how-to-detect-a-click-outside-a-react-component-5hk8</link>
      <guid>https://dev.to/morshedulmunna/how-to-detect-a-click-outside-a-react-component-5hk8</guid>
      <description>&lt;p&gt;How to detect a click outside a React component&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useEffect, useRef } from 'react';
import { FiSearch } from 'react-icons/fi';
import { useDispatch, useSelector } from 'react-redux';
import { focusToggle } from '../Redux/actionsCreators/searchAction';

const SearchAutoComplete = () =&amp;gt; {
    const state = useSelector((state) =&amp;gt; state.searchReducer);
    const dispatch = useDispatch();

    const { suggestions, isFocus } = state;

    console.log(isFocus);

    const ref = useRef(null);
    useEffect(() =&amp;gt; {
        const handleClickOutside = (event) =&amp;gt; {
            if (ref.current &amp;amp;&amp;amp; !ref.current.contains(event.target)) {
                dispatch(focusToggle(false));
            }
        };
        document.addEventListener('click', handleClickOutside, true);
        return () =&amp;gt; {
            document.removeEventListener('click', handleClickOutside, true);
        };
    }, [dispatch]);

    return (
        &amp;lt;&amp;gt;
            &amp;lt;div className="flex justify-center items-center direction flex-col "&amp;gt;
                &amp;lt;p className="text-[20px] mb-6 font-bold"&amp;gt;Search Product&amp;lt;/p&amp;gt;
                &amp;lt;div className=" relative "&amp;gt;
                    &amp;lt;div ref={ref} className="flex items-center relative"&amp;gt;
                        &amp;lt;FiSearch className=" absolute left-2 text-white-700 " /&amp;gt;
                        &amp;lt;input
                            autocomplete="off"
                            onFocus={() =&amp;gt; dispatch(focusToggle(true))}
                            className="bg-white-500 py-2 text-[14px] p-[5px] pl-7 min-w-[500px] shadow-boxSad rounded-sm px-6 outline-none"
                            type="text"
                            name="search"
                            placeholder="search..."
                        /&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;div className=" shadow-boxSad bg-white-100 absolute w-full"&amp;gt;
                        {suggestions.map((item, i) =&amp;gt;
                            isFocus ? (
                                &amp;lt;div className="px-7 text-[14px] py-2 bg-white-500 hover:bg-white-100 duration-300 ease-in-out cursor-pointer rounded-sm" key={i}&amp;gt;
                                    {item}
                                &amp;lt;/div&amp;gt;
                            ) : null
                        )}
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/&amp;gt;
    );
};

export default SearchAutoComplete;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>How to Connect Rust lib + Web Assembly + React.js(typescript)</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Sat, 29 Oct 2022 14:27:51 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/how-to-connect-rust-lib-web-assembly-reactjstypescript-23j3</link>
      <guid>https://dev.to/morshedulmunna/how-to-connect-rust-lib-web-assembly-reactjstypescript-23j3</guid>
      <description>&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In this article, I’ll introduce followings through creating simple demo application.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to create a React app quickly with create-react-app.&lt;/li&gt;
&lt;li&gt;How to create a Wasm library with Rust.&lt;/li&gt;
&lt;li&gt;How to create a Wasm library with Rust.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Create a React App with create-react-app
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn create react-app myApp --template typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app myApp --template typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then you can run this App in your Local Mechine&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd myApp
npm start or yarn start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starting the development server...&lt;br&gt;
Compiled successfully!&lt;/p&gt;

&lt;p&gt;You can now view react-wasm-tutorial in the browser.&lt;/p&gt;

&lt;p&gt;Local: &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;br&gt;
On Your Network: &lt;a href="http://192.168.0.153:3000" rel="noopener noreferrer"&gt;http://192.168.0.153:3000&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Create Rust library for Wasm
&lt;/h2&gt;

&lt;p&gt;To Connected Wasm to the React app, you need to follow these steps.&lt;/p&gt;

&lt;p&gt;Create Rust library with cargo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo new myApp-lib --lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Now Implement a Rust function that you want to call from JavaScript.
&lt;/h4&gt;

&lt;p&gt;Simply, we’ll implement add function and call it from JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// lib.rs

fn add(a: i32, b: i32) -&amp;gt; i32 {
    a + b
}

#[test]
fn add_test() {
    assert_eq!(1 + 1, add(1, 1));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Wrap the function with wasm-bindgen to export it as Wasm.
&lt;/h4&gt;

&lt;p&gt;wasm-bindgen is Rust library that facilitate high-level interactions between Wasm and JavaScript. For example, you can call Rust(Wasm) from JavaScript, and vice versa.&lt;/p&gt;

&lt;p&gt;To add wasm-bindgen dependency, you need to add it to Cargo.toml.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[package]
name = "wasm-lib"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2.78"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, Let’s wrap the function with wasm-bindgen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use wasm_bindgen::prelude::*;

#[wasm_bindgen]
fn add(a: i32, b: i32) -&amp;gt; i32 {
    a + b
}

#[test]
fn add_test() {
    assert_eq!(1 + 1, add(1, 1));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Build as Wasm library with wasm-pack
&lt;/h4&gt;

&lt;p&gt;By using wasm-bindgen, you can build Rust as Wasm. However, To load and run Wasm from JavaScript, You need some JavaScript boilerplate codes (like WebAssembly.instantiate).&lt;/p&gt;

&lt;p&gt;To do that, you can use wasm-pack!&lt;/p&gt;

&lt;p&gt;At first, you need to install it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ..
cargo update
wasm-pack --version
=&amp;gt; wasm-pack 0.10.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, let’s add npm script to call it by npm run build-lib.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
   "build-lib:wasm": "cd myApp-lib &amp;amp;&amp;amp; wasm-pack build --target web --out-dir pkg",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s check the output directory generated by wasm-pack.&lt;/p&gt;

&lt;p&gt;You noticed package.json file was generated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ tree wasm-lib/pkg
├── package.json
├── wasm_lib.d.ts
├── wasm_lib.js
├── wasm_lib_bg.wasm
└── wasm_lib_bg.wasm.d.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So you can install the Wasm library to other project easily. Let’s install it to the React app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install ./wasm-lib/pkg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add ./wasm-lib/pkg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Call the Wasm function from the React app.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import and call
import React, { useEffect, useState } from 'react';
+import init, { add } from "wasm-lib";
import logo from './logo.svg';
import './App.css';

function App() {
+  const [ans, setAns] = useState(0);
+  useEffect(() =&amp;gt; {
+    init().then(() =&amp;gt; {
+      setAns(add(1, 1));
+    })
+  }, [])
  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;header className="App-header"&amp;gt;
        &amp;lt;img src={logo} className="App-logo" alt="logo" /&amp;gt;
        &amp;lt;p&amp;gt;
          Edit &amp;lt;code&amp;gt;src/App.tsx&amp;lt;/code&amp;gt; and save to reload.
        &amp;lt;/p&amp;gt;
+        &amp;lt;p&amp;gt;1 + 1 = {ans}&amp;lt;/p&amp;gt;
        &amp;lt;a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        &amp;gt;
          Learn React
        &amp;lt;/a&amp;gt;
      &amp;lt;/header&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finaly, you can see this screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced topics
&lt;/h3&gt;

&lt;p&gt;In this article, I provided the quick introduction for Rust and Wasm. To use Wasm in production, you should think about the following topics.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;li&gt;Multi-Threading&lt;/li&gt;
&lt;li&gt;Exception handling&lt;/li&gt;
&lt;li&gt;Call JavaScript from Rust&lt;/li&gt;
&lt;li&gt;Call Rust struct from JavaScript&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Cross platform&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Backend-Development Learning Roadmap - Step by Step</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Thu, 13 Oct 2022 16:54:46 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/backend-development-learning-roadmap-step-by-step-3a4f</link>
      <guid>https://dev.to/morshedulmunna/backend-development-learning-roadmap-step-by-step-3a4f</guid>
      <description>&lt;h3&gt;
  
  
  Hard Part  for Backend : Row Requirement Analysis to thinking Data Modelling and Database Design.
&lt;/h3&gt;

&lt;p&gt;We need to learn Data Modeling and Database Design....... see Next article.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Design

&lt;ul&gt;
&lt;li&gt;Rest APi&lt;/li&gt;
&lt;li&gt;GraphQL&lt;/li&gt;
&lt;li&gt;gRPC&lt;/li&gt;
&lt;li&gt;Web Socket&lt;/li&gt;
&lt;li&gt;Message Broker&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Api Security

&lt;ul&gt;
&lt;li&gt;JWT Token&lt;/li&gt;
&lt;li&gt;Refresh Token&lt;/li&gt;
&lt;li&gt;OAuth2&lt;/li&gt;
&lt;li&gt;SAML&lt;/li&gt;
&lt;li&gt;Identity Proviiders

&lt;ul&gt;
&lt;li&gt;Cognito&lt;/li&gt;
&lt;li&gt;Auth0&lt;/li&gt;
&lt;li&gt;Firebase&lt;/li&gt;
&lt;li&gt;Okta&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Role Base Authorization&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;API Testing

&lt;ul&gt;
&lt;li&gt;Unit Testing&lt;/li&gt;
&lt;li&gt;Acceptance Testing&lt;/li&gt;
&lt;li&gt;Load Testing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;API Documentation

&lt;ul&gt;
&lt;li&gt;Swagger&lt;/li&gt;
&lt;li&gt;Postman&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;— Concept Must Need for Backend Developer &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ORM ( Object Relational Model)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;SQL

&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;mySQL&lt;/li&gt;
&lt;li&gt;MSSQL/ Oracle&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NoSQL

&lt;ul&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;AWS DynamoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In Memory*** - (for Cashing)

&lt;ul&gt;
&lt;li&gt;Redis**&lt;/li&gt;
&lt;li&gt;Mem Cashed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Graph Database

&lt;ul&gt;
&lt;li&gt;Neo4j&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Linux server&lt;/li&gt;
&lt;li&gt;Cloud Computing&lt;/li&gt;
&lt;li&gt;DevOps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Server Application Responsibility
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Listen Request&lt;/li&gt;
&lt;li&gt;Process

&lt;ul&gt;
&lt;li&gt;Algorithm&lt;/li&gt;
&lt;li&gt;Data Structure&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Problem Solving&lt;/li&gt;
&lt;li&gt;CURD Operation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Response&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HTTP Knowladges: - Stateless communication
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Get Request - ( Want to Read from server)&lt;/li&gt;
&lt;li&gt;POST - ( Create new Data )&lt;/li&gt;
&lt;li&gt;PUT/PATCH - ( Update Existing Content)&lt;/li&gt;
&lt;li&gt;DELETE - (Delete Data from Database)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>backend</category>
      <category>api</category>
      <category>database</category>
      <category>roadmap</category>
    </item>
    <item>
      <title>Learn Rust Programming Language</title>
      <dc:creator>Morshedul Munna</dc:creator>
      <pubDate>Fri, 07 Oct 2022 18:37:49 +0000</pubDate>
      <link>https://dev.to/morshedulmunna/learn-rust-programming-language-4402</link>
      <guid>https://dev.to/morshedulmunna/learn-rust-programming-language-4402</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Lets Start Learning Rust Programming Language
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Installing rustup on Windows
&lt;/h3&gt;

&lt;p&gt;Go To the Link and Downloads Rustup exe file.&lt;br&gt;
&lt;a href="https://www.rust-lang.org/tools/install" rel="noopener noreferrer"&gt;https://www.rust-lang.org/tools/install&lt;/a&gt;&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%2Fbypdnjug2499y6q48yq4.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%2Fbypdnjug2499y6q48yq4.png" alt=" " width="562" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run The exe File and Type 1 Then Press Enter. installing...................&lt;/p&gt;
&lt;h3&gt;
  
  
  Installing rustup on Linux or macOS
&lt;/h3&gt;

&lt;p&gt;Run The Bellow Commend in your terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check whether you have Rust installed correctly, open a shell and enter this line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rustc --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updating and Uninstalling&lt;br&gt;
Once Rust is installed via rustup, when a new version of Rust is released, updating to the latest version is easy. From your shell, run the following update script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rustup update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To uninstall Rust and rustup, run the following uninstall script from your shell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rustup self uninstall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;learn more From official Book &lt;br&gt;
&lt;a href="https://doc.rust-lang.org/book/" rel="noopener noreferrer"&gt;Rust Book&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
