# the-parvez-16/arx-01 architecture

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

- Interactive diagram: https://gitdiagram.com/the-parvez-16/arx-01
- Repository: https://github.com/the-parvez-16/arx-01

## Overview

ARX-01 is a recurring-payment recovery system with an operations dashboard. The operator reviews payment and recovery activity, simulates a failure, creates a recovery case, and can execute or cancel recovery. Recovery orchestration obtains payment context, requests an AI recommendation, applies deterministic policy limits, retries eligible payments, and records lifecycle events for audit review. The README documents PostgreSQL-backed services and Groq inference; the sampled sources confirm the recovery, payment, decision, and audit calls. Gateway routes and frontend API wiring are represented at the documented service boundary; their detailed routing was not sampled.

Main entry points: [`services/recovery-service/src/main/java/com/arx01/recovery/application/RecoveryApplicationService.java`](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/application/RecoveryApplicationService.java) (Recovery orchestration), [`services/api-gateway/src/main/java/com/arx01/gateway/ApiGatewayApplication.java`](https://github.com/the-parvez-16/arx-01/blob/main/services/api-gateway/src/main/java/com/arx01/gateway/ApiGatewayApplication.java) (API gateway), [`client/src/lib/api.ts`](https://github.com/the-parvez-16/arx-01/blob/main/client/src/lib/api.ts) (Frontend API client), [`services/payment-service/src/main/java/com/arx01/payment/presentation/PaymentController.java`](https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/presentation/PaymentController.java) (Payment API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Operations console"]
  node_dashboard["Operations dashboard<br/>[page.tsx]"]
  node_recovery_detail["Recovery detail<br/>[page.tsx]"]
  node_console_views["Console views"]
  node_api_client["Frontend API client<br/>[api.ts]"]
end

subgraph group_edge["API entry"]
  node_gateway["API gateway"]
end

subgraph group_recovery["Recovery workflow"]
  node_recovery_api["Recovery API"]
  node_recovery_app["Recovery orchestration"]
  node_policy["Policy guardrails"]
  node_recovery_store[("Recovery repositories")]
  node_payment_client["Payment service client"]
  node_decision_client["Decision service client"]
  node_audit_client["Audit service client"]
end

subgraph group_payments["Payment service"]
  node_payment_api["Payment API"]
  node_payment_app["Payment operations"]
  node_payment_store[("Payment repositories")]
end

subgraph group_decision_audit["Decision and audit"]
  node_decision_api["Decision API"]
  node_decision_app["Decision application"]
  node_groq_client["Groq decision client"]
  node_audit_api["Audit API"]
  node_audit_app["Audit application"]
  node_audit_store[("Audit event repository")]
end

node_operator(("Merchant operator"))
node_groq{{"Groq inference"}}
node_postgres[("PostgreSQL")]

node_operator -->|"uses"| node_dashboard
node_operator -->|"inspects"| node_recovery_detail
node_dashboard -->|"requests data"| node_api_client
node_recovery_detail -->|"renders"| node_console_views
node_console_views -->|"requests actions"| node_api_client
node_api_client -->|"sends requests"| node_gateway
node_gateway -->|"routes requests"| node_recovery_api
node_gateway -->|"routes requests"| node_payment_api
node_gateway -->|"routes requests"| node_audit_api
node_recovery_api -->|"invokes"| node_recovery_app
node_recovery_app -->|"gets payment; retries"| node_payment_client
node_payment_client -->|"calls"| node_payment_api
node_payment_api -->|"invokes"| node_payment_app
node_payment_app -->|"reads and writes"| node_payment_store
node_payment_store -->|"persists"| node_postgres
node_recovery_app -->|"requests decision"| node_decision_client
node_decision_client -->|"calls"| node_decision_api
node_decision_api -->|"invokes"| node_decision_app
node_decision_app -->|"requests inference"| node_groq_client
node_groq_client -->|"sends prompt"| node_groq
node_recovery_app -->|"checks eligibility"| node_policy
node_recovery_app -->|"reads and writes"| node_recovery_store
node_recovery_store -->|"persists"| node_postgres
node_recovery_app -->|"sends events"| node_audit_client
node_audit_client -->|"calls"| node_audit_api
node_audit_api -->|"invokes"| node_audit_app
node_audit_app -->|"appends and reads"| node_audit_store
node_audit_store -->|"persists"| node_postgres

click node_dashboard "https://github.com/the-parvez-16/arx-01/blob/main/client/src/app/page.tsx"
click node_recovery_detail "https://github.com/the-parvez-16/arx-01/blob/main/client/src/app/recovery/%5BcaseId%5D/page.tsx"
click node_console_views "https://github.com/the-parvez-16/arx-01/blob/main/client/src/components/RecoveryDetailView.tsx"
click node_api_client "https://github.com/the-parvez-16/arx-01/blob/main/client/src/lib/api.ts"
click node_gateway "https://github.com/the-parvez-16/arx-01/blob/main/services/api-gateway/src/main/java/com/arx01/gateway/ApiGatewayApplication.java"
click node_recovery_api "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/presentation/RecoveryController.java"
click node_recovery_app "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/application/RecoveryApplicationService.java"
click node_policy "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/policy/RecoveryPolicyEngine.java"
click node_recovery_store "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/domain/repository/RecoveryCaseRepository.java"
click node_payment_client "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/PaymentServiceClient.java"
click node_decision_client "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/DecisionServiceClient.java"
click node_audit_client "https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/AuditServiceClient.java"
click node_payment_api "https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/presentation/PaymentController.java"
click node_payment_app "https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/application/PaymentApplicationService.java"
click node_payment_store "https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/domain/repository/PaymentRepository.java"
click node_decision_api "https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/presentation/DecisionController.java"
click node_decision_app "https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/application/DecisionApplicationService.java"
click node_groq_client "https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/infrastructure/GroqDecisionClient.java"
click node_audit_api "https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/presentation/AuditController.java"
click node_audit_app "https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/application/AuditApplicationService.java"
click node_audit_store "https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/domain/repository/AuditEventRepository.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_dashboard,node_recovery_detail,node_console_views,node_api_client toneBlue
class node_gateway,node_postgres toneAmber
class node_recovery_api,node_recovery_app,node_policy,node_recovery_store,node_payment_client,node_decision_client,node_audit_client toneMint
class node_payment_api,node_payment_app,node_payment_store toneRose
class node_decision_api,node_decision_app,node_groq_client,node_audit_api,node_audit_app,node_audit_store,node_operator,node_groq toneIndigo
```

## Components

### Operations console

- [Operations dashboard](https://github.com/the-parvez-16/arx-01/blob/main/client/src/app/page.tsx): `client/src/app/page.tsx`
- [Recovery detail](https://github.com/the-parvez-16/arx-01/blob/main/client/src/app/recovery/%5BcaseId%5D/page.tsx): `client/src/app/recovery/[caseId]/page.tsx`
- [Console views](https://github.com/the-parvez-16/arx-01/blob/main/client/src/components/RecoveryDetailView.tsx): `client/src/components/RecoveryDetailView.tsx`
- [Frontend API client](https://github.com/the-parvez-16/arx-01/blob/main/client/src/lib/api.ts): `client/src/lib/api.ts`

### API entry

- [API gateway](https://github.com/the-parvez-16/arx-01/blob/main/services/api-gateway/src/main/java/com/arx01/gateway/ApiGatewayApplication.java): `services/api-gateway/src/main/java/com/arx01/gateway/ApiGatewayApplication.java`

### Recovery workflow

- [Recovery API](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/presentation/RecoveryController.java): `services/recovery-service/src/main/java/com/arx01/recovery/presentation/RecoveryController.java`
- [Recovery orchestration](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/application/RecoveryApplicationService.java): `services/recovery-service/src/main/java/com/arx01/recovery/application/RecoveryApplicationService.java`
- [Policy guardrails](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/policy/RecoveryPolicyEngine.java): `services/recovery-service/src/main/java/com/arx01/recovery/policy/RecoveryPolicyEngine.java`
- [Recovery repositories](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/domain/repository/RecoveryCaseRepository.java): `services/recovery-service/src/main/java/com/arx01/recovery/domain/repository/RecoveryCaseRepository.java`
- [Payment service client](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/PaymentServiceClient.java): `services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/PaymentServiceClient.java`
- [Decision service client](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/DecisionServiceClient.java): `services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/DecisionServiceClient.java`
- [Audit service client](https://github.com/the-parvez-16/arx-01/blob/main/services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/AuditServiceClient.java): `services/recovery-service/src/main/java/com/arx01/recovery/infrastructure/client/AuditServiceClient.java`

### Payment service

- [Payment API](https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/presentation/PaymentController.java): `services/payment-service/src/main/java/com/arx01/payment/presentation/PaymentController.java`
- [Payment operations](https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/application/PaymentApplicationService.java): `services/payment-service/src/main/java/com/arx01/payment/application/PaymentApplicationService.java`
- [Payment repositories](https://github.com/the-parvez-16/arx-01/blob/main/services/payment-service/src/main/java/com/arx01/payment/domain/repository/PaymentRepository.java): `services/payment-service/src/main/java/com/arx01/payment/domain/repository/PaymentRepository.java`

### Decision and audit

- [Decision API](https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/presentation/DecisionController.java): `services/decision-service/src/main/java/com/arx01/decision/presentation/DecisionController.java`
- [Decision application](https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/application/DecisionApplicationService.java): `services/decision-service/src/main/java/com/arx01/decision/application/DecisionApplicationService.java`
- [Groq decision client](https://github.com/the-parvez-16/arx-01/blob/main/services/decision-service/src/main/java/com/arx01/decision/infrastructure/GroqDecisionClient.java): `services/decision-service/src/main/java/com/arx01/decision/infrastructure/GroqDecisionClient.java`
- [Audit API](https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/presentation/AuditController.java): `services/audit-service/src/main/java/com/arx01/audit/presentation/AuditController.java`
- [Audit application](https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/application/AuditApplicationService.java): `services/audit-service/src/main/java/com/arx01/audit/application/AuditApplicationService.java`
- [Audit event repository](https://github.com/the-parvez-16/arx-01/blob/main/services/audit-service/src/main/java/com/arx01/audit/domain/repository/AuditEventRepository.java): `services/audit-service/src/main/java/com/arx01/audit/domain/repository/AuditEventRepository.java`

### Other components

- **Merchant operator**
- **Groq inference**
- **PostgreSQL**

## Connections

- Merchant operator → Operations dashboard: uses
- Merchant operator → Recovery detail: inspects
- Operations dashboard → Frontend API client: requests data
- Recovery detail → Console views: renders
- Console views → Frontend API client: requests actions
- Frontend API client → API gateway: sends requests
- API gateway → Recovery API: routes requests
- API gateway → Payment API: routes requests
- API gateway → Audit API: routes requests
- Recovery API → Recovery orchestration: invokes
- Recovery orchestration → Payment service client: gets payment; retries
- Payment service client → Payment API: calls
- Payment API → Payment operations: invokes
- Payment operations → Payment repositories: reads and writes
- Payment repositories → PostgreSQL: persists
- Recovery orchestration → Decision service client: requests decision
- Decision service client → Decision API: calls
- Decision API → Decision application: invokes
- Decision application → Groq decision client: requests inference
- Groq decision client → Groq inference: sends prompt
- Recovery orchestration → Policy guardrails: checks eligibility
- Recovery orchestration → Recovery repositories: reads and writes
- Recovery repositories → PostgreSQL: persists
- Recovery orchestration → Audit service client: sends events
- Audit service client → Audit API: calls
- Audit API → Audit application: invokes
- Audit application → Audit event repository: appends and reads
- Audit event repository → PostgreSQL: persists
