# siso24/finservice architecture

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

- Interactive diagram: https://gitdiagram.com/siso24/finservice
- Repository: https://github.com/siso24/finservice

## Overview

This is a procurement and payables application: employees request goods, approved requisitions enter vendor bidding, accepted quotes become purchase orders, and delivery is received and inspected before invoices can be approved and paid. The sampled services show these transitions and their repository access; the tree also identifies catalog, vendor, office, user, and authentication capabilities. The README is empty, and several controllers and services were not sampled, so their exact wiring is not asserted.

Main entry points: [`backend/src/main/java/com/fintech/p2p/service/RFQService.java`](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/RFQService.java) (RFQ workflow), [`backend/src/main/java/com/fintech/p2p/service/PurchaseOrderService.java`](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/PurchaseOrderService.java) (Purchase order workflow), [`backend/src/main/java/com/fintech/p2p/service/InvoiceService.java`](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/InvoiceService.java) (Invoice verification & payment), [`backend/src/main/java/com/fintech/p2p/controller/AuthController.java`](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/AuthController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity &amp; access"]
  node_auth_api["Authentication API"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_user_details["User details lookup"]
  node_user_store[("User repository<br/>[UserRepo.java]")]
end

subgraph group_sourcing["Sourcing &amp; bidding"]
  node_pr_api["Requisition API"]
  node_pr_service["Requisition workflow"]
  node_pr_store[("Requisition repository")]
  node_rfq_api["RFQ API<br/>[RFQController.java]"]
  node_rfq_service["RFQ workflow<br/>[RFQService.java]"]
  node_rfq_store[("RFQ repository<br/>[RFQRepo.java]")]
  node_quote_api["Vendor quote API"]
  node_quote_service["Vendor quote workflow"]
  node_quote_store[("Quote repository")]
end

subgraph group_fulfillment["Orders &amp; receiving"]
  node_po_api["Purchase order API"]
  node_po_service["Purchase order workflow"]
  node_po_store[("Purchase order repository")]
  node_grn_api["Goods receipt API"]
  node_grn_service["Receipt &amp; inspection"]
  node_grn_store[("Receipt repository")]
end

subgraph group_payables["Invoice &amp; payment"]
  node_invoice_api["Invoice API"]
  node_invoice_service["Invoice verification &amp; payment"]
  node_invoice_store[("Invoice repository<br/>[InvoiceRepo.java]")]
end

subgraph group_records["Procurement records"]
  node_catalog["Products &amp; categories"]
  node_vendor_profile["Vendor profiles"]
  node_office["Office management"]
  node_user_admin["User management"]
end

node_employee(("Employee / finance / admin"))
node_vendor(("Vendor"))

node_employee -->|"registers / logs in"| node_auth_api
node_auth_api -->|"looks up / saves"| node_user_store
node_auth_api -->|"issues tokens"| node_jwt
node_user_details -->|"loads account"| node_user_store
node_employee -->|"submits / tracks"| node_pr_api
node_pr_api -->|"invokes"| node_pr_service
node_pr_service -->|"reads / writes"| node_pr_store
node_employee -->|"creates / tracks"| node_rfq_api
node_rfq_api -->|"invokes"| node_rfq_service
node_rfq_service -->|"reads / updates"| node_pr_store
node_rfq_service -->|"reads / writes"| node_rfq_store
node_rfq_service -->|"checks bids"| node_quote_store
node_vendor -->|"submits bids"| node_quote_api
node_employee -->|"reviews / accepts"| node_quote_api
node_quote_api -->|"invokes"| node_quote_service
node_quote_service -->|"loads RFQ"| node_rfq_store
node_quote_service -->|"reads / writes"| node_quote_store
node_employee -->|"generates / approves"| node_po_api
node_vendor -->|"views orders"| node_po_api
node_po_api -->|"invokes"| node_po_service
node_po_service -->|"loads accepted quote"| node_quote_store
node_po_service -->|"updates requisition"| node_pr_store
node_po_service -->|"reads / writes"| node_po_store
node_employee -->|"records receipt"| node_grn_api
node_grn_api -->|"invokes"| node_grn_service
node_grn_service -->|"loads order"| node_po_store
node_grn_service -->|"reads / writes"| node_grn_store
node_vendor -->|"submits invoice"| node_invoice_api
node_employee -->|"reviews / pays"| node_invoice_api
node_invoice_api -->|"invokes"| node_invoice_service
node_invoice_service -->|"checks order"| node_po_store
node_invoice_service -->|"checks receipt"| node_grn_store
node_invoice_service -->|"reads / writes"| node_invoice_store

click node_auth_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/AuthController.java"
click node_jwt "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/JwtService.java"
click node_user_details "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/security/CustomUserDetailsService.java"
click node_user_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/UserRepo.java"
click node_pr_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/PurchaseRequisitionController.java"
click node_pr_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/PurchaseRequisitionService.java"
click node_pr_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/PurchaseRequisitionRepo.java"
click node_rfq_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/RFQController.java"
click node_rfq_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/RFQService.java"
click node_rfq_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/RFQRepo.java"
click node_quote_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/VendorQuoteController.java"
click node_quote_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/VendorQuoteService.java"
click node_quote_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/VendorQuoteRepo.java"
click node_po_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/PurchaseOrderController.java"
click node_po_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/PurchaseOrderService.java"
click node_po_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/PurchaseOrderRepo.java"
click node_grn_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/GoodReceiptController.java"
click node_grn_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/GoodsReceiptNoteService.java"
click node_grn_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/GoodsReceiptNoteRepo.java"
click node_invoice_api "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/InvoiceController.java"
click node_invoice_service "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/InvoiceService.java"
click node_invoice_store "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/InvoiceRepo.java"
click node_catalog "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/ProductController.java"
click node_vendor_profile "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/VendorProfileController.java"
click node_office "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/OfficeController.java"
click node_user_admin "https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/UserController.java"

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_auth_api,node_jwt,node_user_details,node_user_store toneBlue
class node_pr_api,node_pr_service,node_pr_store,node_rfq_api,node_rfq_service,node_rfq_store,node_quote_api,node_quote_service,node_quote_store toneAmber
class node_po_api,node_po_service,node_po_store,node_grn_api,node_grn_service,node_grn_store toneMint
class node_invoice_api,node_invoice_service,node_invoice_store toneRose
class node_catalog,node_vendor_profile,node_office,node_user_admin,node_employee,node_vendor toneIndigo
```

## Components

### Identity & access

- [Authentication API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/AuthController.java): `backend/src/main/java/com/fintech/p2p/controller/AuthController.java`
- [JWT service](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/JwtService.java): `backend/src/main/java/com/fintech/p2p/service/JwtService.java`
- [User details lookup](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/security/CustomUserDetailsService.java): `backend/src/main/java/com/fintech/p2p/security/CustomUserDetailsService.java`
- [User repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/UserRepo.java): `backend/src/main/java/com/fintech/p2p/repo/UserRepo.java`

### Sourcing & bidding

- [Requisition API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/PurchaseRequisitionController.java): `backend/src/main/java/com/fintech/p2p/controller/PurchaseRequisitionController.java`
- [Requisition workflow](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/PurchaseRequisitionService.java): `backend/src/main/java/com/fintech/p2p/service/PurchaseRequisitionService.java`
- [Requisition repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/PurchaseRequisitionRepo.java): `backend/src/main/java/com/fintech/p2p/repo/PurchaseRequisitionRepo.java`
- [RFQ API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/RFQController.java): `backend/src/main/java/com/fintech/p2p/controller/RFQController.java`
- [RFQ workflow](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/RFQService.java): `backend/src/main/java/com/fintech/p2p/service/RFQService.java`
- [RFQ repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/RFQRepo.java): `backend/src/main/java/com/fintech/p2p/repo/RFQRepo.java`
- [Vendor quote API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/VendorQuoteController.java): `backend/src/main/java/com/fintech/p2p/controller/VendorQuoteController.java`
- [Vendor quote workflow](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/VendorQuoteService.java): `backend/src/main/java/com/fintech/p2p/service/VendorQuoteService.java`
- [Quote repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/VendorQuoteRepo.java): `backend/src/main/java/com/fintech/p2p/repo/VendorQuoteRepo.java`

### Orders & receiving

- [Purchase order API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/PurchaseOrderController.java): `backend/src/main/java/com/fintech/p2p/controller/PurchaseOrderController.java`
- [Purchase order workflow](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/PurchaseOrderService.java): `backend/src/main/java/com/fintech/p2p/service/PurchaseOrderService.java`
- [Purchase order repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/PurchaseOrderRepo.java): `backend/src/main/java/com/fintech/p2p/repo/PurchaseOrderRepo.java`
- [Goods receipt API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/GoodReceiptController.java): `backend/src/main/java/com/fintech/p2p/controller/GoodReceiptController.java`
- [Receipt & inspection](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/GoodsReceiptNoteService.java): `backend/src/main/java/com/fintech/p2p/service/GoodsReceiptNoteService.java`
- [Receipt repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/GoodsReceiptNoteRepo.java): `backend/src/main/java/com/fintech/p2p/repo/GoodsReceiptNoteRepo.java`

### Invoice & payment

- [Invoice API](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/InvoiceController.java): `backend/src/main/java/com/fintech/p2p/controller/InvoiceController.java`
- [Invoice verification & payment](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/service/InvoiceService.java): `backend/src/main/java/com/fintech/p2p/service/InvoiceService.java`
- [Invoice repository](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/repo/InvoiceRepo.java): `backend/src/main/java/com/fintech/p2p/repo/InvoiceRepo.java`

### Procurement records

- [Products & categories](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/ProductController.java): `backend/src/main/java/com/fintech/p2p/controller/ProductController.java`
- [Vendor profiles](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/VendorProfileController.java): `backend/src/main/java/com/fintech/p2p/controller/VendorProfileController.java`
- [Office management](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/OfficeController.java): `backend/src/main/java/com/fintech/p2p/controller/OfficeController.java`
- [User management](https://github.com/siso24/finservice/blob/main/backend/src/main/java/com/fintech/p2p/controller/UserController.java): `backend/src/main/java/com/fintech/p2p/controller/UserController.java`

### Other components

- **Employee / finance / admin**
- **Vendor**

## Connections

- Employee / finance / admin → Authentication API: registers / logs in
- Authentication API → User repository: looks up / saves
- Authentication API → JWT service: issues tokens
- User details lookup → User repository: loads account
- Employee / finance / admin → Requisition API: submits / tracks
- Requisition API → Requisition workflow: invokes
- Requisition workflow → Requisition repository: reads / writes
- Employee / finance / admin → RFQ API: creates / tracks
- RFQ API → RFQ workflow: invokes
- RFQ workflow → Requisition repository: reads / updates
- RFQ workflow → RFQ repository: reads / writes
- RFQ workflow → Quote repository: checks bids
- Vendor → Vendor quote API: submits bids
- Employee / finance / admin → Vendor quote API: reviews / accepts
- Vendor quote API → Vendor quote workflow: invokes
- Vendor quote workflow → RFQ repository: loads RFQ
- Vendor quote workflow → Quote repository: reads / writes
- Employee / finance / admin → Purchase order API: generates / approves
- Vendor → Purchase order API: views orders
- Purchase order API → Purchase order workflow: invokes
- Purchase order workflow → Quote repository: loads accepted quote
- Purchase order workflow → Requisition repository: updates requisition
- Purchase order workflow → Purchase order repository: reads / writes
- Employee / finance / admin → Goods receipt API: records receipt
- Goods receipt API → Receipt & inspection: invokes
- Receipt & inspection → Purchase order repository: loads order
- Receipt & inspection → Receipt repository: reads / writes
- Vendor → Invoice API: submits invoice
- Employee / finance / admin → Invoice API: reviews / pays
- Invoice API → Invoice verification & payment: invokes
- Invoice verification & payment → Purchase order repository: checks order
- Invoice verification & payment → Receipt repository: checks receipt
- Invoice verification & payment → Invoice repository: reads / writes
