This guide is for readers who want to understand the codebase efficiently without reading every file in order.
It suggests a practical reading path through the most important backend, frontend, and testing files.
Read these first:
README.mddocs/19-showcase-overview.mddocs/20-microservices-and-boundaries.mddocs/29-database-schema-and-relationships.md
Why:
- they explain the system shape before you dive into code
If you want to understand the most technically interesting part of the repository, start here:
src/Banking.Services.Deposit/Program.cssrc/Banking.Services.Deposit/Controllers/DepositsController.cssrc/Banking.Services.Deposit/Services/DepositService.cssrc/Banking.Services.Deposit/Services/DepositTransactionProcessor.cssrc/Banking.Services.Deposit/Messaging/DepositOutboxDispatcher.cssrc/Banking.Services.Deposit/Services/DepositPendingReviewRetryWorker.cs
Why:
- this is where the project demonstrates
Idempotency,Outbox,SAGA, andPendingReview
Next, read:
src/Banking.Services.Account/Program.cssrc/Banking.Services.Account/Controllers/AccountsController.cssrc/Banking.Services.Account/Services/AccountService.cssrc/Banking.Services.Account/Data/AccountDbContext.cs
Why:
Account Serviceis the single owner of balances- it shows how deposits and withdrawals become account postings
Recommended files:
src/Banking.Services.Customer/Program.cssrc/Banking.Services.Customer/Controllers/CustomersController.cssrc/Banking.Services.Customer/Services/CustomerService.cssrc/Banking.Services.Customer/Data/CustomerDbContext.cs
Why:
- it is simpler than
Deposit Service - it shows the shared startup model and the portal sign-in flow
These files explain cross-cutting behavior used by every service:
src/Banking.BuildingBlocks/Extensions/BankingServiceCollectionExtensions.cssrc/Banking.BuildingBlocks/Security/BankingHeaderAuthenticationHandler.cssrc/Banking.BuildingBlocks/Security/InternalServiceAuthenticationDelegatingHandler.cssrc/Banking.BuildingBlocks/Swagger/BankingSecurityHeadersOperationFilter.cs
Why:
- they explain authentication, internal service identity, ProblemDetails, and Swagger header documentation
Start here:
src/Banking.Web/src/App.tsxsrc/Banking.Web/src/hooks/useOperationsConsole.tssrc/Banking.Web/src/components/CustomerPanel.tsxsrc/Banking.Web/src/components/AccountPanel.tsxsrc/Banking.Web/src/components/PendingReviewPanel.tsx
Why:
- these show how operator workflows are modeled around selected customer and account context
Start here:
src/Banking.CustomerPortal/src/App.tsxsrc/Banking.CustomerPortal/src/api.ts
Why:
- these show the customer-facing version of the same backend capabilities
To understand what the project considers important, read the tests next:
tests/Banking.Services.Deposit.UnitTests/DepositTransactionProcessorTests.cstests/Banking.Services.Deposit.UnitTests/DepositServiceTests.cstests/Banking.Services.Deposit.IntegrationTests/DepositsApiTests.cstests/Banking.Services.Account.UnitTests/AccountServiceTests.cstests/Banking.Services.Customer.IntegrationTests/CustomersApiTests.cstests/Banking.Contracts.Tests/OpenApiContractTests.cs
Why:
- the tests reveal the intended business rules and failure handling
Read:
docs/openapi-phase1.yaml
Why:
- it gives you the public contract shape after you already understand the internal implementation
Read in this order:
src/Banking.Services.Deposit/Services/DepositService.cssrc/Banking.Services.Deposit/Services/DepositTransactionProcessor.cssrc/Banking.Services.Deposit/Messaging/DepositOutboxDispatcher.cssrc/Banking.Services.Account/Services/AccountService.cstests/Banking.Services.Deposit.UnitTests/DepositTransactionProcessorTests.cs
Read in this order:
docs/openapi-phase1.yamlsrc/Banking.Services.Customer/Controllers/CustomersController.cssrc/Banking.Services.Account/Controllers/AccountsController.cssrc/Banking.Services.Deposit/Controllers/DepositsController.cssrc/Banking.BuildingBlocks/Swagger/BankingSecurityHeadersOperationFilter.cs
Read in this order:
src/Banking.Web/src/App.tsxsrc/Banking.Web/src/hooks/useOperationsConsole.tssrc/Banking.CustomerPortal/src/App.tsxsrc/Banking.Web/src/api.tssrc/Banking.CustomerPortal/src/api.ts
If you only read a small part of the repository, the best high-value set is:
src/Banking.Services.Deposit/Services/DepositTransactionProcessor.cssrc/Banking.Services.Account/Services/AccountService.cssrc/Banking.BuildingBlocks/Extensions/BankingServiceCollectionExtensions.cssrc/Banking.Web/src/hooks/useOperationsConsole.tstests/Banking.Services.Deposit.UnitTests/DepositTransactionProcessorTests.cs
Those files capture most of the architectural ideas in the project.