<?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: Guillermo Mejia</title>
    <description>The latest articles on Forem by Guillermo Mejia (@memolition).</description>
    <link>https://forem.com/memolition</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%2F1401377%2F65832cea-1db0-4267-9b06-4d829124346b.jpg</url>
      <title>Forem: Guillermo Mejia</title>
      <link>https://forem.com/memolition</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/memolition"/>
    <language>en</language>
    <item>
      <title>Why I’m Betting on Zig for Backend Development</title>
      <dc:creator>Guillermo Mejia</dc:creator>
      <pubDate>Fri, 06 Mar 2026 19:42:27 +0000</pubDate>
      <link>https://forem.com/memolition/why-im-betting-on-zig-for-backend-development-1p83</link>
      <guid>https://forem.com/memolition/why-im-betting-on-zig-for-backend-development-1p83</guid>
      <description>&lt;h2&gt;
  
  
  The Shift from High-Level to Low-Level
&lt;/h2&gt;

&lt;p&gt;After years in managed ecosystems, I recently started switching my backend development to Zig. The catalyst? Leveraging AI as a pair-programmer has made "low-level" development feel as easy as high-level. With quick knowledge access and debugging assistance, the traditional barriers to manual memory management are fading, leaving only the massive performance benefits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture: The Modular Monolith
&lt;/h2&gt;

&lt;p&gt;As a solo developer, jumping straight into microservices is often an invitation to infrastructure nightmares. Instead, I’ve adopted a Vertical Slicing approach within a single Zig project.&lt;/p&gt;

&lt;p&gt;By using Zig libraries to isolate features into their own modules, I maintain a clean separation of concerns. This allows the code to stay maintainable today, while being "extraction-ready" for a future RPC-based microservices architecture tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Batteries-Not-Included" Advantage
&lt;/h2&gt;

&lt;p&gt;Zig web development is undeniably manual. You won’t find a "Spring Boot" or "Next.js" here. I’m currently writing my own Database Abstraction Layer with a custom query builder and migration/seeding scripts.&lt;/p&gt;

&lt;p&gt;Using &lt;a href="https://tomsik.cz/tokamak/" rel="noopener noreferrer"&gt;Tokamak&lt;/a&gt; has significantly eased nested routing, grouping, and middleware integration. It’s a testament to the growing Zig ecosystem that even a solo-dev project like Tokamak -which is under active, rapid development- can provide such a streamlined experience. This "developer-to-developer" support is a hallmark of the Zig community; we aren't waiting for massive corporate frameworks. Instead, we are building focused, high-performance tools that prioritize clarity over magic. Seeing that level of passion from other developers makes the "manual" nature of Zig web-dev feel less like a chore and more like a collective effort to reclaim control over the stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's Worth the Time
&lt;/h2&gt;

&lt;p&gt;The syntax simplicity of Zig is its greatest strength. There is no hidden control flow and no hidden allocations. While it takes longer to set up the initial "plumbing," you are building a long-running platform that avoids the technical debt and "black box" behavior of high-level frameworks. You gain full control over every resource your application touches.&lt;/p&gt;

</description>
      <category>zig</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Built with Google Gemini: Humanizing the Helpdesk with Warm AI</title>
      <dc:creator>Guillermo Mejia</dc:creator>
      <pubDate>Wed, 04 Mar 2026 16:47:04 +0000</pubDate>
      <link>https://forem.com/memolition/built-with-google-gemini-humanizing-the-helpdesk-with-warm-ai-1fp1</link>
      <guid>https://forem.com/memolition/built-with-google-gemini-humanizing-the-helpdesk-with-warm-ai-1fp1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mlh/built-with-google-gemini-02-25-26"&gt;Built with Google Gemini: Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built with Google Gemini
&lt;/h2&gt;

&lt;p&gt;I built a modular agent orchestration platform designed to humanize automated support. While many AI bots feel transactional and cold, my project focuses on "warmth"—using &lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; to create empathetic, context-aware interactions that feel like talking to a helpful peer.&lt;/p&gt;

&lt;p&gt;The platform uses a specialized adapter system to deploy versioned conversational flows. Whether it is a car dealership agent qualifying a lead or an internal assistant helping a developer navigate complex node-based logic, Gemini handles the reasoning and tone. The "warmth" is evident in the transitions; instead of a generic "I still need a few more details: car mileage, general condition," the bot asks, &lt;em&gt;"What is the mileage and condition of your 2020 Elantra?"&lt;/em&gt;—directly referencing the user's specific context with a natural touch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The demo showcases two distinct Telegram-integrated use cases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automotive Sales Lead&lt;/strong&gt;: Intelligently qualifies leads by asking for missing details (mileage, condition) in a conversational manner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform Navigator&lt;/strong&gt;: A RAG-powered assistant that explains internal flows, nodes, and edges (using ng-diagrams) to help users understand their agent structures.&lt;/li&gt;
&lt;/ol&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%2Fwyvg6vw1b4eghrqffnv9.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%2Fwyvg6vw1b4eghrqffnv9.png" alt="AI Agent Builder Bot prototype Dashboard and Bots" width="800" height="451"&gt;&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%2Fiu02f6k2z8fkcn6kdeeu.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%2Fiu02f6k2z8fkcn6kdeeu.png" alt="AI Agent Buiilder Assistant close-up" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MFE Architecture&lt;/strong&gt;: Implementing &lt;strong&gt;Angular 21&lt;/strong&gt; with &lt;strong&gt;Native Federation v2&lt;/strong&gt;, &lt;strong&gt;PrimeNG&lt;/strong&gt;, and &lt;strong&gt;Tailwind CSS&lt;/strong&gt; allowed for a highly modular frontend where different agent types are managed independently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vectorized RAG&lt;/strong&gt;: Integrating &lt;strong&gt;Supabase (pgvector)&lt;/strong&gt; for long-term memory and restricted content delivery within agent flows, managed through Vercel's AI SDK.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Warmth" Prompt&lt;/strong&gt;: I learned that achieving a human-centric tone is about using Gemini’s reasoning to bridge the gap between structured data (like car specs) and natural prose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge Performance&lt;/strong&gt;: Deploying on &lt;strong&gt;Vercel Edge Functions&lt;/strong&gt; provided the low latency required for real-time Telegram webhooks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Google Gemini Feedback
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FinOps &amp;amp; Efficiency&lt;/strong&gt;: A major highlight was the cost-to-performance ratio. Using &lt;strong&gt;text-embedding-001&lt;/strong&gt; with &lt;strong&gt;3072 dimensionality&lt;/strong&gt; provided high semantic accuracy, yet running over 170+ requests (Gemini Flash + Embeddings) during an 8-hour development sprint cost only about $0.10.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Experience&lt;/strong&gt;: The &lt;strong&gt;Google AI Studio&lt;/strong&gt; integration was incredibly straightforward. The reasoning capabilities of Gemini 2.5 Flash allowed the bot to handle complex lead qualification without losing its "warm" persona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Friction Points&lt;/strong&gt;: Balancing empathy with brevity on platforms like Telegram requires significant prompt-tuning. More native support for "persona" weighting within the SDK would be a welcome addition.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Beyond the Prototype: Lessons from Atom Dev Day Guatemala</title>
      <dc:creator>Guillermo Mejia</dc:creator>
      <pubDate>Tue, 03 Mar 2026 22:55:12 +0000</pubDate>
      <link>https://forem.com/memolition/beyond-the-prototype-lessons-from-atom-dev-day-guatemala-3npk</link>
      <guid>https://forem.com/memolition/beyond-the-prototype-lessons-from-atom-dev-day-guatemala-3npk</guid>
      <description>&lt;p&gt;This past weekend was a transformative experience. I participated in Atom Dev Day, and while my project did not reach a competition-ready state by the deadline, I walked away feeling fortunate for the opportunity. &lt;/p&gt;

&lt;p&gt;Sometimes, the real value of a hackathon is not the final pitch, but the process of being pushed back into the deep end and discover new ways of challenging yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stepping Out of the Comfort Zone
&lt;/h2&gt;

&lt;p&gt;Beyond the lost sleep, this event served as a vital reminder to step out of my comfort zone. It reignited my hunger for exploration in a landscape where emerging technologies grow faster than we can experiment with them. &lt;/p&gt;

&lt;p&gt;Working with Machine Learning and LLMs is a constant reminder of how transformative these tools are. When harnessed correctly, they offer a multitude of possibilities across diverse markets, accelerating and easing processes that used to be significant bottlenecks. &lt;/p&gt;

&lt;h2&gt;
  
  
  Atom: Bridging the Future in Latin America
&lt;/h2&gt;

&lt;p&gt;I want to extend a massive thank you to the &lt;a href="https://atomchat.io/" rel="noopener noreferrer"&gt;Atom team&lt;/a&gt;. They are leading the charge across Latin America, bridging geographical borders and with the future.&lt;/p&gt;

&lt;p&gt;It is exactly this kind of organization that makes a bright, tech-driven future accessible to audiences of every kind, regardless of technical knowledge. The quality of the event they organized in such a short timeframe was world-class.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Talent in Guatemala
&lt;/h2&gt;

&lt;p&gt;A major highlight was the talent gathered in one room. The Guatemalan software community is thriving, spanning all ages and experience levels. The energy was proof that the talent and experience exist here in abundance and it's amazing how companies like Atom jump in and empower it to showcase what we can achieve.&lt;/p&gt;

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

&lt;p&gt;This weekend was a wake up call to keep building at the edge of what is possible. My prototype is just the beginning, and I am grateful to Atom for providing the spark.&lt;/p&gt;

</description>
      <category>atomdevday</category>
      <category>ai</category>
      <category>guatemalatech</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>From Zero to Monorepo: Angular v21 MFE with Native Federation</title>
      <dc:creator>Guillermo Mejia</dc:creator>
      <pubDate>Tue, 17 Feb 2026 05:01:32 +0000</pubDate>
      <link>https://forem.com/memolition/from-zero-to-monorepo-angular-v21-mfe-with-native-federation-3a2h</link>
      <guid>https://forem.com/memolition/from-zero-to-monorepo-angular-v21-mfe-with-native-federation-3a2h</guid>
      <description>&lt;p&gt;Welcome! In this guide, we'll walk through how to set up an Angular 21 application using a &lt;strong&gt;micro frontend&lt;/strong&gt; architecture. We'll be using the awesome &lt;a href="https://www.npmjs.com/package/@angular-architects/native-federation" rel="noopener noreferrer"&gt;Angular Architects' Native Federation&lt;/a&gt; package to make this happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are Micro Frontends?
&lt;/h3&gt;

&lt;p&gt;Think of micro frontends like building with LEGO. Instead of one giant, heavy block, you build several smaller, independent pieces (the "micro" parts) that fit together to make one big application (the "frontend"). This makes it much easier for different teams to work on different parts of the app without stepping on each other's toes.&lt;/p&gt;

&lt;p&gt;Native Federation uses features already built into modern browsers (native module federation) to handle this, which makes it fast and future-proof!&lt;/p&gt;




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

&lt;p&gt;Before we dive in, let's make sure your toolbox is ready. You'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://www.nvmnode.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Node Version Manager (nvm):&lt;/strong&gt;&lt;/a&gt; This is like a switcher for different Node.js versions. It's super helpful if you work on multiple projects!&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;&lt;strong&gt;Node.js and npm:&lt;/strong&gt;&lt;/a&gt; You'll need the latest LTS (Long Term Support) version that's compatible with Angular 21. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://angular.dev/tools/cli" rel="noopener noreferrer"&gt;&lt;strong&gt;Angular CLI:&lt;/strong&gt;&lt;/a&gt; This is our command-line buddy that helps us generate code and run our app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To install the Angular CLI, just run this command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 1: Set up Your Workspace (Monorepo)
&lt;/h2&gt;

&lt;p&gt;First, let's create a special workspace called a "monorepo." A monorepo is just a fancy way of saying "a folder that holds many related projects." &lt;/p&gt;

&lt;p&gt;We'll use a special flag, &lt;code&gt;--create-application=false&lt;/code&gt;, which creates a clean slate without an initial app, so we can carefully add our own later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng new mfe-spa &lt;span class="nt"&gt;--create-application&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false
cd &lt;/span&gt;mfe-spa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Create Your Applications
&lt;/h2&gt;

&lt;p&gt;Now, inside our workspace, we'll create two main types of apps: the &lt;strong&gt;Shell&lt;/strong&gt; (Host) and the &lt;strong&gt;Micro Frontend&lt;/strong&gt; (Remote).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Host Application (The Shell)
&lt;/h3&gt;

&lt;p&gt;Think of the host as the "frame" or "shell" that ties everything together. It's the main app that users load first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g application host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Remote Application (The Micro Frontend)
&lt;/h3&gt;

&lt;p&gt;The remote application is the specific piece of functionality (like a profile page or a dashboard) that will live within the host. You can call it whatever you like!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g application my-remote-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(Feel free to replace &lt;code&gt;my-remote-app&lt;/code&gt; with your own name!)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Add Native Federation
&lt;/h2&gt;

&lt;p&gt;Now, let's install the magic that makes it all possible! This package will help us share components and modules between apps.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @angular-architects/native-federation &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 4: Give Your Apps a Micro Frontend Boost!
&lt;/h2&gt;

&lt;p&gt;Now, we need to run a special "initialization" command for each of our apps. This will prepare them to talk to each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preparing the Host
&lt;/h3&gt;

&lt;p&gt;Run this command to tell our host app that it will be looking for micro frontends.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @angular-architects/native-federation:init &lt;span class="nt"&gt;--project&lt;/span&gt; host &lt;span class="nt"&gt;--type&lt;/span&gt; host &lt;span class="nt"&gt;--port&lt;/span&gt; 4200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;What this does:&lt;/strong&gt; It configures the host as the "shell" (the consumer) and sets it to run on the standard development port (4200).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Preparing the Remote
&lt;/h3&gt;

&lt;p&gt;Now we'll do something similar for our remote app (replace &lt;code&gt;my-remote-app&lt;/code&gt; with the name you chose).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @angular-architects/native-federation:init &lt;span class="nt"&gt;--project&lt;/span&gt; my-remote-app &lt;span class="nt"&gt;--type&lt;/span&gt; remote &lt;span class="nt"&gt;--port&lt;/span&gt; 4201
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;What this does:&lt;/strong&gt; It configures our remote app to be a "provider" (something the host can borrow) and sets it to run on a different port (4201) so they don't fight over the same port!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Configuration Magic (Post-Initialization)
&lt;/h2&gt;

&lt;p&gt;Now that we've set up the foundations, we just need to tell each app what it's sharing and what it's receiving!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. In the Remote App: Choose What to Share
&lt;/h3&gt;

&lt;p&gt;In your remote app's &lt;code&gt;module-federation.config.ts&lt;/code&gt;, you decide which components or modules are "exposed" (available to be borrowed by the host).&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="c1"&gt;// projects/my-remote-app/module-federation.config.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myRemoteApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// We name it './Component' so the host knows how to find it!&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./projects/my-remote-app/src/app/my-remote-component/my-remote-component.component.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. In the Host App: Find Your Remotes
&lt;/h3&gt;

&lt;p&gt;In your host app's &lt;code&gt;module-federation.config.ts&lt;/code&gt;, you tell the host where to look for your micro frontends.&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="c1"&gt;// projects/host/module-federation.config.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;remotes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// The name should match the name in the remote's config!&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myRemoteApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost:4201/remoteEntry.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Loading the Remote Dynamically!
&lt;/h3&gt;

&lt;p&gt;The coolest part! In your host app's routing configuration, you can use &lt;code&gt;loadRemoteModule&lt;/code&gt; to load your remote component only when the user needs it.&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="c1"&gt;// projects/host/src/app/app.routes.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-feature&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;loadComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 
      &lt;span class="nf"&gt;loadRemoteModule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myRemoteApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MyRemoteComponentComponent&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion: You Did It!
&lt;/h2&gt;

&lt;p&gt;Congratulations! You've just set up a modern, scalable micro frontend architecture using Angular 21 and Native Federation. This foundation makes it easy to keep your projects organized as they grow and helps you stay on the cutting edge of web development.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
