# nilesh1381/finsight architecture

> Architecture diagram of the GitHub repository nilesh1381/finsight, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nilesh1381/finsight
- Repository: https://github.com/nilesh1381/finsight

## Overview

FinSight is an invoice-processing and financial-insights application. Users enter through the authenticated web UI to upload invoices, view records and analytics, inspect GST and fraud results, analyze vendors, or ask an AI advisor. Invoice uploads are extracted, categorized, checked, and stored; a separate FinAI API supports invoice indexing and retrieval-grounded chat. The README is empty, so capability coverage is based on the supplied tree and excerpts; unsampled page and service details limit some connections.

Main entry points: [`frontend/src/App.jsx`](https://github.com/nilesh1381/finsight/blob/main/frontend/src/App.jsx) (App routes), [`backend/src/controllers/invoiceController.js`](https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/invoiceController.js) (Invoice controller), [`backend/src/routes/invoices.routes.js`](https://github.com/nilesh1381/finsight/blob/main/backend/src/routes/invoices.routes.js) (Invoice routes), [`frontend/src/api/client.js`](https://github.com/nilesh1381/finsight/blob/main/frontend/src/api/client.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["App routes<br/>[App.jsx]"]
  node_auth["Auth session<br/>[AuthContext.jsx]"]
  node_api["API client<br/>[client.js]"]
  node_home["Upload screen<br/>[Home.jsx]"]
  node_records["Invoice records"]
  node_table["Invoice table<br/>[InvoiceTable.jsx]"]
  node_gstpanel["GST panel<br/>[GSTPanel.jsx]"]
  node_analytics["Analytics dashboard<br/>[Analytics.jsx]"]
  node_advisorpage["Advisor page<br/>[AdvisorPage.jsx]"]
  node_advisorui["AI advisor UI<br/>[AIAdvisor.jsx]"]
  node_vendorpage["Vendor page"]
  node_vendorui["Vendor intelligence"]
  node_fraudpage["Fraud report"]
end

subgraph group_invoice["Invoice processing"]
  node_express["Express API<br/>[app.js]"]
  node_invoice_routes["Invoice routes<br/>[invoices.routes.js]"]
  node_upload["Upload middleware<br/>[upload.js]"]
  node_invoice_controller["Invoice controller"]
  node_ocr["Document OCR<br/>[ocr.service.js]"]
  node_extraction["Data extraction"]
  node_gst["GST categorization"]
  node_invoice_model["Invoice model<br/>[invoice.model.js]"]
  node_database[("PostgreSQL<br/>[database.js]")]
  node_export["Invoice export<br/>[export.service.js]"]
end

subgraph group_insights["Financial insights"]
  node_fraud["Fraud checks"]
  node_dashboard["Dashboard controller"]
  node_vendor_controller["Vendor controller"]
  node_vendor_analysis["Vendor analysis"]
  node_advisor_controller["Advisor controller"]
  node_advisor_service["Advisor service"]
end

subgraph group_rag["FinAI retrieval"]
  node_finai_api["FinAI API<br/>[app.py]"]
  node_rag_pipeline["RAG pipeline<br/>[rag_pipeline.py]"]
  node_embeddings["Embeddings<br/>[embeddings.py]"]
  node_vector_store[("Vector store<br/>[vector_store.py]")]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"provides session"| node_auth
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_records
node_app -->|"routes to"| node_analytics
node_app -->|"routes to"| node_advisorpage
node_app -->|"routes to"| node_vendorpage
node_app -->|"routes to"| node_fraudpage
node_records -->|"renders"| node_table
node_records -->|"renders"| node_gstpanel
node_advisorpage -->|"renders"| node_advisorui
node_vendorpage -->|"renders"| node_vendorui
node_table -->|"requests invoices"| node_api
node_fraudpage -->|"requests report data"| node_api
node_home -.->|"uploads invoices"| node_api
node_advisorui -.->|"requests advice"| node_api
node_api -.->|"HTTP requests"| node_express
node_express -->|"mounts"| node_invoice_routes
node_invoice_routes -->|"parses upload"| node_upload
node_invoice_routes -->|"dispatches"| node_invoice_controller
node_invoice_routes -->|"generates exports"| node_export
node_invoice_controller -->|"reads image text"| node_ocr
node_invoice_controller -->|"extracts fields"| node_extraction
node_invoice_controller -->|"categorizes tax"| node_gst
node_invoice_controller -->|"checks anomalies"| node_fraud
node_invoice_controller -->|"checks and saves"| node_invoice_model
node_invoice_model -->|"queries"| node_database
node_dashboard -->|"queries"| node_database
node_vendor_controller -->|"requests analysis"| node_vendor_analysis
node_vendor_analysis -->|"queries"| node_database
node_advisor_controller -->|"requests advice"| node_advisor_service
node_invoice_routes -.->|"serves dashboard"| node_dashboard
node_finai_api -->|"answers chat"| node_rag_pipeline
node_rag_pipeline -->|"embeds query"| node_embeddings
node_rag_pipeline -->|"retrieves context"| node_vector_store
node_finai_api -->|"embeds indexed invoice"| node_embeddings
node_finai_api -->|"stores invoice"| node_vector_store
node_invoice_controller -.->|"indexes invoice"| node_finai_api

click node_app "https://github.com/nilesh1381/finsight/blob/main/frontend/src/App.jsx"
click node_auth "https://github.com/nilesh1381/finsight/blob/main/frontend/src/context/AuthContext.jsx"
click node_api "https://github.com/nilesh1381/finsight/blob/main/frontend/src/api/client.js"
click node_home "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/Home.jsx"
click node_records "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/InvoiceRecordsPage.jsx"
click node_table "https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/InvoiceTable.jsx"
click node_gstpanel "https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/GSTPanel.jsx"
click node_analytics "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/Analytics.jsx"
click node_advisorpage "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/AdvisorPage.jsx"
click node_advisorui "https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/AIAdvisor.jsx"
click node_vendorpage "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/VendorIntelligencePage.jsx"
click node_vendorui "https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/VendorIntelligence.jsx"
click node_fraudpage "https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/FraudAndAnomalyPage.jsx"
click node_express "https://github.com/nilesh1381/finsight/blob/main/backend/src/app.js"
click node_invoice_routes "https://github.com/nilesh1381/finsight/blob/main/backend/src/routes/invoices.routes.js"
click node_upload "https://github.com/nilesh1381/finsight/blob/main/backend/src/middleware/upload.js"
click node_invoice_controller "https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/invoiceController.js"
click node_ocr "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/ocr.service.js"
click node_extraction "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/extraction.service.js"
click node_gst "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/gst.categorization.service.js"
click node_fraud "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/fraud.detection.service.js"
click node_invoice_model "https://github.com/nilesh1381/finsight/blob/main/backend/src/models/invoice.model.js"
click node_database "https://github.com/nilesh1381/finsight/blob/main/backend/src/config/database.js"
click node_dashboard "https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/dashboardController.js"
click node_vendor_controller "https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/vendorController.js"
click node_vendor_analysis "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/vendor.analysis.service.js"
click node_advisor_controller "https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/advisorController.js"
click node_advisor_service "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/ai.advisor.service.js"
click node_export "https://github.com/nilesh1381/finsight/blob/main/backend/src/services/export.service.js"
click node_finai_api "https://github.com/nilesh1381/finsight/blob/main/backend/app.py"
click node_rag_pipeline "https://github.com/nilesh1381/finsight/blob/main/backend/finai/rag_pipeline.py"
click node_embeddings "https://github.com/nilesh1381/finsight/blob/main/backend/finai/embeddings.py"
click node_vector_store "https://github.com/nilesh1381/finsight/blob/main/backend/finai/vector_store.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_auth,node_api,node_home,node_records,node_table,node_gstpanel,node_analytics,node_advisorpage,node_advisorui,node_vendorpage,node_vendorui,node_fraudpage,node_user toneBlue
class node_express,node_invoice_routes,node_upload,node_invoice_controller,node_ocr,node_extraction,node_gst,node_invoice_model,node_database,node_export toneAmber
class node_fraud,node_dashboard,node_vendor_controller,node_vendor_analysis,node_advisor_controller,node_advisor_service toneMint
class node_finai_api,node_rag_pipeline,node_embeddings,node_vector_store toneRose
```

## Components

### Web application

- [App routes](https://github.com/nilesh1381/finsight/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth session](https://github.com/nilesh1381/finsight/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/nilesh1381/finsight/blob/main/frontend/src/api/client.js): `frontend/src/api/client.js`
- [Upload screen](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [Invoice records](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/InvoiceRecordsPage.jsx): `frontend/src/pages/InvoiceRecordsPage.jsx`
- [Invoice table](https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/InvoiceTable.jsx): `frontend/src/components/InvoiceTable.jsx`
- [GST panel](https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/GSTPanel.jsx): `frontend/src/components/GSTPanel.jsx`
- [Analytics dashboard](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/Analytics.jsx): `frontend/src/pages/Analytics.jsx`
- [Advisor page](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/AdvisorPage.jsx): `frontend/src/pages/AdvisorPage.jsx`
- [AI advisor UI](https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/AIAdvisor.jsx): `frontend/src/components/AIAdvisor.jsx`
- [Vendor page](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/VendorIntelligencePage.jsx): `frontend/src/pages/VendorIntelligencePage.jsx`
- [Vendor intelligence](https://github.com/nilesh1381/finsight/blob/main/frontend/src/components/VendorIntelligence.jsx): `frontend/src/components/VendorIntelligence.jsx`
- [Fraud report](https://github.com/nilesh1381/finsight/blob/main/frontend/src/pages/FraudAndAnomalyPage.jsx): `frontend/src/pages/FraudAndAnomalyPage.jsx`

### Invoice processing

- [Express API](https://github.com/nilesh1381/finsight/blob/main/backend/src/app.js): `backend/src/app.js`
- [Invoice routes](https://github.com/nilesh1381/finsight/blob/main/backend/src/routes/invoices.routes.js): `backend/src/routes/invoices.routes.js`
- [Upload middleware](https://github.com/nilesh1381/finsight/blob/main/backend/src/middleware/upload.js): `backend/src/middleware/upload.js`
- [Invoice controller](https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/invoiceController.js): `backend/src/controllers/invoiceController.js`
- [Document OCR](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/ocr.service.js): `backend/src/services/ocr.service.js`
- [Data extraction](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/extraction.service.js): `backend/src/services/extraction.service.js`
- [GST categorization](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/gst.categorization.service.js): `backend/src/services/gst.categorization.service.js`
- [Invoice model](https://github.com/nilesh1381/finsight/blob/main/backend/src/models/invoice.model.js): `backend/src/models/invoice.model.js`
- [PostgreSQL](https://github.com/nilesh1381/finsight/blob/main/backend/src/config/database.js): `backend/src/config/database.js`
- [Invoice export](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/export.service.js): `backend/src/services/export.service.js`

### Financial insights

- [Fraud checks](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/fraud.detection.service.js): `backend/src/services/fraud.detection.service.js`
- [Dashboard controller](https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/dashboardController.js): `backend/src/controllers/dashboardController.js`
- [Vendor controller](https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/vendorController.js): `backend/src/controllers/vendorController.js`
- [Vendor analysis](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/vendor.analysis.service.js): `backend/src/services/vendor.analysis.service.js`
- [Advisor controller](https://github.com/nilesh1381/finsight/blob/main/backend/src/controllers/advisorController.js): `backend/src/controllers/advisorController.js`
- [Advisor service](https://github.com/nilesh1381/finsight/blob/main/backend/src/services/ai.advisor.service.js): `backend/src/services/ai.advisor.service.js`

### FinAI retrieval

- [FinAI API](https://github.com/nilesh1381/finsight/blob/main/backend/app.py): `backend/app.py`
- [RAG pipeline](https://github.com/nilesh1381/finsight/blob/main/backend/finai/rag_pipeline.py): `backend/finai/rag_pipeline.py`
- [Embeddings](https://github.com/nilesh1381/finsight/blob/main/backend/finai/embeddings.py): `backend/finai/embeddings.py`
- [Vector store](https://github.com/nilesh1381/finsight/blob/main/backend/finai/vector_store.py): `backend/finai/vector_store.py`

### Other components

- **User**

## Connections

- User → App routes: uses (evidence: `frontend/src/App.jsx`)
- App routes → Auth session: provides session (evidence: `frontend/src/App.jsx`)
- App routes → Upload screen: routes to (evidence: `frontend/src/App.jsx`)
- App routes → Invoice records: routes to (evidence: `frontend/src/App.jsx`)
- App routes → Analytics dashboard: routes to (evidence: `frontend/src/App.jsx`)
- App routes → Advisor page: routes to (evidence: `frontend/src/App.jsx`)
- App routes → Vendor page: routes to (evidence: `frontend/src/App.jsx`)
- App routes → Fraud report: routes to (evidence: `frontend/src/App.jsx`)
- Invoice records → Invoice table: renders (evidence: `frontend/src/pages/InvoiceRecordsPage.jsx`)
- Invoice records → GST panel: renders (evidence: `frontend/src/pages/InvoiceRecordsPage.jsx`)
- Advisor page → AI advisor UI: renders (evidence: `frontend/src/pages/AdvisorPage.jsx`)
- Vendor page → Vendor intelligence: renders
- Invoice table → API client: requests invoices (evidence: `frontend/src/components/InvoiceTable.jsx`)
- Fraud report → API client: requests report data (evidence: `frontend/src/pages/FraudAndAnomalyPage.jsx`)
- Upload screen → API client: uploads invoices
- AI advisor UI → API client: requests advice
- API client → Express API: HTTP requests
- Express API → Invoice routes: mounts (evidence: `backend/src/app.js`)
- Invoice routes → Upload middleware: parses upload (evidence: `backend/src/routes/invoices.routes.js`)
- Invoice routes → Invoice controller: dispatches (evidence: `backend/src/routes/invoices.routes.js`)
- Invoice routes → Invoice export: generates exports (evidence: `backend/src/routes/invoices.routes.js`)
- Invoice controller → Document OCR: reads image text (evidence: `backend/src/controllers/invoiceController.js`)
- Invoice controller → Data extraction: extracts fields (evidence: `backend/src/controllers/invoiceController.js`)
- Invoice controller → GST categorization: categorizes tax (evidence: `backend/src/controllers/invoiceController.js`)
- Invoice controller → Fraud checks: checks anomalies (evidence: `backend/src/controllers/invoiceController.js`)
- Invoice controller → Invoice model: checks and saves (evidence: `backend/src/controllers/invoiceController.js`)
- Invoice model → PostgreSQL: queries (evidence: `backend/src/models/invoice.model.js`)
- Dashboard controller → PostgreSQL: queries (evidence: `backend/src/controllers/dashboardController.js`)
- Vendor controller → Vendor analysis: requests analysis (evidence: `backend/src/controllers/vendorController.js`)
- Vendor analysis → PostgreSQL: queries (evidence: `backend/src/services/vendor.analysis.service.js`)
- Advisor controller → Advisor service: requests advice (evidence: `backend/src/controllers/advisorController.js`)
- Invoice routes → Dashboard controller: serves dashboard
- FinAI API → RAG pipeline: answers chat (evidence: `backend/app.py`)
- RAG pipeline → Embeddings: embeds query (evidence: `backend/finai/rag_pipeline.py`)
- RAG pipeline → Vector store: retrieves context (evidence: `backend/finai/rag_pipeline.py`)
- FinAI API → Embeddings: embeds indexed invoice (evidence: `backend/app.py`)
- FinAI API → Vector store: stores invoice (evidence: `backend/app.py`)
- Invoice controller → FinAI API: indexes invoice
