<?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: Gustavo felix</title>
    <description>The latest articles on Forem by Gustavo felix (@gustavojofelix).</description>
    <link>https://forem.com/gustavojofelix</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%2F721249%2Fd71d808e-ed0b-4ef1-8780-c25be32d84f2.png</url>
      <title>Forem: Gustavo felix</title>
      <link>https://forem.com/gustavojofelix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gustavojofelix"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Gustavo felix</dc:creator>
      <pubDate>Sat, 06 Dec 2025 21:17:29 +0000</pubDate>
      <link>https://forem.com/gustavojofelix/-3dll</link>
      <guid>https://forem.com/gustavojofelix/-3dll</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j" class="crayons-story__hidden-navigation-link"&gt;From Tutorials to a Real Banking Platform: Inside Alvor Bank (.NET 10 + Angular 21 Nx Monorepo)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/gustavojofelix" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F721249%2Fd71d808e-ed0b-4ef1-8780-c25be32d84f2.png" alt="gustavojofelix profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/gustavojofelix" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Gustavo felix
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Gustavo felix
                
              
              &lt;div id="story-author-preview-content-3089520" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/gustavojofelix" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F721249%2Fd71d808e-ed0b-4ef1-8780-c25be32d84f2.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Gustavo felix&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 6 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j" id="article-link-3089520"&gt;
          From Tutorials to a Real Banking Platform: Inside Alvor Bank (.NET 10 + Angular 21 Nx Monorepo)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/dotnet"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;dotnet&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/angular"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;angular&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/microservices"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;microservices&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/eventdriven"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;eventdriven&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>dotnet</category>
      <category>angular</category>
      <category>microservices</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>From Tutorials to a Real Banking Platform: Inside Alvor Bank (.NET 10 + Angular 21 Nx Monorepo)</title>
      <dc:creator>Gustavo felix</dc:creator>
      <pubDate>Sat, 06 Dec 2025 21:16:31 +0000</pubDate>
      <link>https://forem.com/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j</link>
      <guid>https://forem.com/gustavojofelix/from-tutorials-to-a-real-banking-platform-inside-alvor-bank-net-10-angular-21-nx-monorepo-1j8j</guid>
      <description>&lt;p&gt;Most of us start our careers building &lt;strong&gt;small tutorial projects&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;todo apps
&lt;/li&gt;
&lt;li&gt;basic CRUD APIs
&lt;/li&gt;
&lt;li&gt;simple dashboards
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They’re great for learning syntax… but they don’t prepare you for &lt;strong&gt;production systems&lt;/strong&gt; with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authentication &amp;amp; authorization
&lt;/li&gt;
&lt;li&gt;domains like Customers, Accounts, Transactions
&lt;/li&gt;
&lt;li&gt;CI/CD pipelines
&lt;/li&gt;
&lt;li&gt;test coverage &amp;amp; quality gates
&lt;/li&gt;
&lt;li&gt;microservices boundaries
&lt;/li&gt;
&lt;li&gt;real frontend architecture
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I decided to build something closer to what I see in real work:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A full digital banking platform called &lt;strong&gt;Alvor Bank&lt;/strong&gt;, using &lt;strong&gt;.NET 10&lt;/strong&gt; and &lt;strong&gt;Angular 21&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post I’m sharing a quick &lt;strong&gt;architecture &amp;amp; quality overview&lt;/strong&gt; of the system. The same slides are what I use in my roadmap/slide deck.&lt;/p&gt;

&lt;p&gt;You can use this as a reference for your own full-stack projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. High-Level Architecture
&lt;/h2&gt;

&lt;p&gt;At a high level, Alvor Bank is split into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API Gateway&lt;/strong&gt; (YARP)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM Service&lt;/strong&gt; (auth, tenants, roles)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer Service&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account Service&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction Service&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification Service&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angular frontends&lt;/strong&gt; for Admin and Branch/Cashier portals
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RabbitMQ&lt;/strong&gt; for events
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; databases per microservice
&lt;/li&gt;
&lt;/ul&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%2Fvca2kokrh5mvlym6gb9w.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%2Fvca2kokrh5mvlym6gb9w.png" alt="Alvor Bank Architecture" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAM owns identity &amp;amp; access
&lt;/li&gt;
&lt;li&gt;CustomerService owns customer data
&lt;/li&gt;
&lt;li&gt;AccountService owns account rules and balances
&lt;/li&gt;
&lt;li&gt;TransactionService owns money movement
&lt;/li&gt;
&lt;li&gt;NotificationService reacts to events and communicates with users
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each service changes for its own reasons, which keeps the boundaries clean.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Solution Structure &amp;amp; Clean Architecture
&lt;/h2&gt;

&lt;p&gt;On the backend, each microservice follows the same structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;*.Domain&lt;/code&gt; – entities, value objects, domain services
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.Application&lt;/code&gt; – use cases, DTOs, interfaces
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.Infrastructure&lt;/code&gt; – EF Core, repositories, external integrations
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.API&lt;/code&gt; – Minimal API / controllers, DI wiring, input/output models
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easy to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;onboard new developers
&lt;/li&gt;
&lt;li&gt;navigate the codebase
&lt;/li&gt;
&lt;li&gt;apply the same patterns across services
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Example slide (VS solution explorer):&lt;/em&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%2F2r93ftk5lftvqihmvhvk.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%2F2r93ftk5lftvqihmvhvk.png" alt="Solution Structure" width="600" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even though each service has its own solution/projects, the &lt;strong&gt;structure is consistent&lt;/strong&gt;, which pays off a lot as the system grows.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Test Coverage as a Quality Gate
&lt;/h2&gt;

&lt;p&gt;One thing I didn’t want was “we’ll add tests later” (a lie we’ve all told ourselves).&lt;/p&gt;

&lt;p&gt;So from the beginning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;there are &lt;strong&gt;unit tests&lt;/strong&gt; for domain logic
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;integration tests&lt;/strong&gt; for API + database
&lt;/li&gt;
&lt;li&gt;test projects are first-class citizens in the solution
&lt;/li&gt;
&lt;li&gt;the CI pipeline &lt;strong&gt;fails&lt;/strong&gt; if coverage drops below a threshold
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Example slide for this section:&lt;/em&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%2Fazu3b1fq5nyhtulkot05.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%2Fazu3b1fq5nyhtulkot05.png" alt="Test Coverage &amp;amp; Quality Gates" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This shifts tests from “nice to have” to an actual &lt;strong&gt;quality gate&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. CI/CD Pipeline (GitHub Actions)
&lt;/h2&gt;

&lt;p&gt;Every pull request triggers an automated pipeline that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Restores &amp;amp; builds the backend (all microservices)
&lt;/li&gt;
&lt;li&gt;Restores &amp;amp; builds the frontend (Angular Nx)
&lt;/li&gt;
&lt;li&gt;Runs all tests (unit + integration)
&lt;/li&gt;
&lt;li&gt;Runs linters (backend + frontend)
&lt;/li&gt;
&lt;li&gt;Builds Docker images (where applicable)
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In later stages, this can be extended to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;push images to a registry
&lt;/li&gt;
&lt;li&gt;deploy to dev/staging environments
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Example slide for CI/CD:&lt;/em&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%2Fmgidgxa0uwfz0g01icfq.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%2Fmgidgxa0uwfz0g01icfq.png" alt="CI/CD Pipeline" width="730" height="741"&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%2F77ga87fk89xzkpqalfga.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%2F77ga87fk89xzkpqalfga.png" alt="CI/CD Pipeline" width="800" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This way, “it works on my machine” is no longer the standard.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Security &amp;amp; IAM
&lt;/h2&gt;

&lt;p&gt;For a banking system, &lt;strong&gt;security isn’t optional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Alvor Bank uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a dedicated &lt;strong&gt;IAM Service&lt;/strong&gt; (based on ASP.NET Identity)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JWT&lt;/strong&gt; for authentication
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;roles &amp;amp; claims&lt;/strong&gt; for authorization
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tenant-aware&lt;/strong&gt; flows for multi-tenant scenarios
&lt;/li&gt;
&lt;li&gt;secure APIs behind the gateway
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of sprinkling &lt;code&gt;[Authorize]&lt;/code&gt; everywhere randomly, the goal is to design &lt;strong&gt;clear boundaries&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what each role can do
&lt;/li&gt;
&lt;li&gt;where trust is enforced
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Final Scope: What the System Actually Does
&lt;/h2&gt;

&lt;p&gt;Alvor Bank is not just architecture for architecture’s sake.&lt;/p&gt;

&lt;p&gt;The planned scope includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer onboarding
&lt;/li&gt;
&lt;li&gt;Creating and managing accounts
&lt;/li&gt;
&lt;li&gt;Deposits, withdrawals, transfers
&lt;/li&gt;
&lt;li&gt;Viewing balances and transaction history
&lt;/li&gt;
&lt;li&gt;Admin features and branch/cashier workflows
&lt;/li&gt;
&lt;li&gt;Notifications triggered by business events
&lt;/li&gt;
&lt;li&gt;Angular portals integrated with all backend services
&lt;/li&gt;
&lt;/ul&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%2Fb831kj5uk1g3za21q267.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%2Fb831kj5uk1g3za21q267.png" alt="Cover Book" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I’m Building This (and Where to Follow Along)
&lt;/h2&gt;

&lt;p&gt;I’ve seen a lot of content about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;microservices
&lt;/li&gt;
&lt;li&gt;Angular
&lt;/li&gt;
&lt;li&gt;CI/CD
&lt;/li&gt;
&lt;li&gt;Docker
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…but very little that connects everything into &lt;strong&gt;one real, end-to-end system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I’m building Alvor Bank in public and documenting the full journey in an early-access book:&lt;/p&gt;

&lt;p&gt;📘 &lt;strong&gt;Modern Full-Stack Banking Microservices&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A step-by-step guide to building a digital banking platform with .NET, Angular, microservices, Docker, RabbitMQ, PostgreSQL, and GitHub Actions CI/CD.&lt;/p&gt;

&lt;p&gt;👉 You can check it out here:&lt;br&gt;&lt;br&gt;
&lt;a href="https://leanpub.com/fullstack-banking-microservices" rel="noopener noreferrer"&gt;The Book&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New chapters and updates are being added as the system evolves.&lt;/p&gt;




&lt;p&gt;If you’ve built something similar (fintech, banking, event-driven systems), I’d love to hear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What’s one &lt;strong&gt;non-negotiable quality gate&lt;/strong&gt; you enforce in your pipelines?&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>dotnet</category>
      <category>angular</category>
      <category>microservices</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>How I Designed a Full-Stack Banking Microservices Architecture Using .NET 9 + Angular Nx</title>
      <dc:creator>Gustavo felix</dc:creator>
      <pubDate>Sat, 29 Nov 2025 20:51:47 +0000</pubDate>
      <link>https://forem.com/gustavojofelix/how-i-designed-a-full-stack-banking-microservices-architecture-using-net-9-angular-nx-1jmc</link>
      <guid>https://forem.com/gustavojofelix/how-i-designed-a-full-stack-banking-microservices-architecture-using-net-9-angular-nx-1jmc</guid>
      <description>&lt;p&gt;For the last few years, I’ve been working on enterprise systems in banking, logistics, and fintech. One thing I realized is that &lt;strong&gt;most tutorials don’t come close&lt;/strong&gt; to what a real production environment looks like.&lt;/p&gt;

&lt;p&gt;So I decided to build and share a &lt;strong&gt;real digital banking platform&lt;/strong&gt;, using the same technologies used by modern financial systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;.NET 9 Microservices&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Angular 19 in an Nx Monorepo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean Architecture + DDD&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL + EF Core&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RabbitMQ (Event-Driven Architecture)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker &amp;amp; Docker Compose&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions CI/CD&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YARP API Gateway&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is the high-level architecture:&lt;br&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%2Fyaokegv95a8jr3wrhuon.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%2Fyaokegv95a8jr3wrhuon.png" alt="architecture" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Built This&lt;/strong&gt;&lt;br&gt;
Most developers learn microservices, Angular, and CI/CD separately.&lt;br&gt;
But in real life, &lt;strong&gt;they all work together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A real banking system needs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;onboarding&lt;/li&gt;
&lt;li&gt;accounts&lt;/li&gt;
&lt;li&gt;transactions&lt;/li&gt;
&lt;li&gt;auditing&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;li&gt;customer portal&lt;/li&gt;
&lt;li&gt;admin/back-office portal&lt;/li&gt;
&lt;li&gt;This requires a &lt;strong&gt;full-stack architecture&lt;/strong&gt;, not just backend or frontend tutorials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;High-Level Architecture Overview&lt;/strong&gt;&lt;br&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%2Fr415g4s6tf0sgkzazk3h.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%2Fr415g4s6tf0sgkzazk3h.png" alt="High-Level Architecture" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a breakdown of the system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend (Angular + Nx)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nx Monorepo&lt;/li&gt;
&lt;li&gt;Customer Portal&lt;/li&gt;
&lt;li&gt;Branch/Cashier Portal&lt;/li&gt;
&lt;li&gt;Shared UI libraries&lt;/li&gt;
&lt;li&gt;Signals/NgRx for state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backend (.NET 9 Microservices)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AccountService&lt;/li&gt;
&lt;li&gt;CustomerService&lt;/li&gt;
&lt;li&gt;TransactionService&lt;/li&gt;
&lt;li&gt;NotificationService&lt;/li&gt;
&lt;li&gt;IAMService (Identity, JWT)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST via YARP API Gateway&lt;/li&gt;
&lt;li&gt;Events via RabbitMQ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL per microservice&lt;/li&gt;
&lt;li&gt;Dockerized environment&lt;/li&gt;
&lt;li&gt;GitHub Actions for CI: build → test → lint → scan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full Source Code&lt;/strong&gt;&lt;br&gt;
I’m publishing the entire system as I build it:&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/gustavojofelix/digital-banking-suite/tree/feature/ch03-dev-environment" rel="noopener noreferrer"&gt;https://github.com/gustavojofelix/digital-banking-suite/tree/feature/ch03-dev-environment&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to Follow the Full Project?&lt;/strong&gt;&lt;br&gt;
I’m documenting EVERYTHING in a new step-by-step book:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Leanpub (Early Access): *&lt;/em&gt;&lt;br&gt;
&lt;a href="https://leanpub.com/fullstack-banking-microservices" rel="noopener noreferrer"&gt;fullstack-banking-microservices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New chapters every week.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're interested, I’d love your feedback — especially from .NET, Angular, and architecture folks.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>angular</category>
      <category>microservices</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
