You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MatchFlow is built on Clean Architecture principles, with clear separation of concerns across six horizontal layers. Requests flow from left to right (and back), while dependencies always point inward toward the core Domain layer. Below is a breakdown of each layer, the major components within it, and the primary data flows.
-**Docker Compose** spins up all containers (React+Nginx, API, SQL emulator, Blob emulator, etc.) for end-to-end testing without Azure.
164
+
165
+
---
166
+
167
+
### 🔄 Primary Data Flows
168
+
169
+
1.**User Upload**
170
+
Browser → Nginx (HTTPS + JWT) → API Gateway
171
+
2.**Invoice Processing**
172
+
`UploadInvoiceController` → UploadInvoiceService
173
+
→ BlobStorageService → Azure Blob (POST PDF)
174
+
→ FormRecognizerClient → Azure Form Recognizer (extract JSON)
175
+
3.**Matching Logic**
176
+
`UploadInvoiceService` → MatchingService → EF Repositories → Azure SQL
177
+
4.**Discrepancy Handling**
178
+
On mismatch, UploadInvoiceService → ServiceBusClient → Azure Service Bus
179
+
Front-end polls/subscribes for results
180
+
5.**Telemetry**
181
+
All API calls and repository operations log to Application Insights
182
+
183
+
---
184
+
185
+
By following Clean Architecture, MatchFlow achieves high testability, clear module boundaries, and the ability to swap out or mock any external dependency (databases, cloud services, UI) without impacting the business core.
0 commit comments