# palakv07/watch-arbitrage-a architecture

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

- Interactive diagram: https://gitdiagram.com/palakv07/watch-arbitrage-a
- Repository: https://github.com/palakv07/watch-arbitrage-a

## Overview

ChronoArb is a watchlist-driven opportunity discovery and management product, with a web dashboard, Python API, and background worker. The main user journey is to sign in, browse and filter opportunities, inspect details, then record feedback or outcomes; supporting branches cover catalog data, alerts, billing, integrations, and organization administration. The API route excerpts establish calls into several services, while the source index identifies additional substantial modules. README content was not provided, and some feature implementations were unsampled, so those links are omitted or marked unverified.

Main entry points: [`apps/api/apps/api/main.py`](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/main.py) (API application), [`apps/api/apps/api/opportunities/api/routes.py`](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/opportunities/api/routes.py) (Opportunity routes), [`apps/api/apps/api/feedback/api/routes.py`](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/feedback/api/routes.py) (Feedback routes), [`apps/api/apps/api/billing/api/routes.py`](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/billing/api/routes.py) (Billing routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web app"]
  node_dashboard["Dashboard pages<br/>[page.tsx]"]
  node_web_session["Web session<br/>[session.ts]"]
  node_web_api["Web API client<br/>[client.ts]"]
end

subgraph group_api["API and identity"]
  node_api_app["API application<br/>[main.py]"]
  node_identity_routes["Identity routes<br/>[routes.py]"]
  node_authentication["Authentication<br/>[auth.py]"]
  node_identity_service["Identity service<br/>[service.py]"]
end

subgraph group_product["Opportunity workflows"]
  node_opportunity_routes["Opportunity routes<br/>[routes.py]"]
  node_opportunity_service["Opportunity service<br/>[service.py]"]
  node_catalog["Catalog service<br/>[service.py]"]
  node_feedback_routes["Feedback routes<br/>[routes.py]"]
  node_feedback_service["Feedback service<br/>[service.py]"]
  node_alerts["Alerts service<br/>[service.py]"]
end

subgraph group_operations["Operations and billing"]
  node_billing_routes["Billing routes<br/>[routes.py]"]
  node_billing_service["Billing service<br/>[service.py]"]
  node_integrations["Integrations<br/>[service.py]"]
  node_admin_routes["Admin routes<br/>[routes.py]"]
  node_admin_service["Admin service<br/>[admin_service.py]"]
end

subgraph group_runtime["Shared runtime"]
  node_database[("Database sessions<br/>[database.py]")]
  node_api_responses["API responses<br/>[api_response.py]"]
  node_worker["Background worker<br/>[pipeline.py]"]
end

node_user(("User"))
node_paypal["PayPal"]

node_user -.->|"uses"| node_dashboard
node_dashboard -.->|"uses session"| node_web_session
node_dashboard -.->|"requests data"| node_web_api
node_web_session -.->|"auth endpoints"| node_identity_routes
node_web_api -.->|"HTTP requests"| node_api_app
node_api_app -->|"registers routes"| node_identity_routes
node_api_app -->|"registers routes"| node_opportunity_routes
node_api_app -->|"registers routes"| node_feedback_routes
node_api_app -->|"registers routes"| node_billing_routes
node_identity_routes -->|"calls"| node_identity_service
node_identity_routes -->|"authenticates"| node_authentication
node_opportunity_routes -->|"calls"| node_opportunity_service
node_opportunity_routes -->|"authorizes"| node_authentication
node_feedback_routes -->|"calls"| node_feedback_service
node_feedback_routes -->|"authorizes"| node_authentication
node_billing_routes -->|"calls"| node_billing_service
node_billing_routes -->|"authorizes"| node_authentication
node_billing_service -.->|"billing operations"| node_paypal
node_admin_routes -->|"calls"| node_admin_service
node_admin_routes -->|"authorizes"| node_authentication
node_identity_routes -->|"gets session"| node_database
node_opportunity_routes -->|"gets session"| node_database
node_feedback_routes -->|"gets session"| node_database
node_billing_routes -->|"gets session"| node_database
node_opportunity_routes -->|"formats response"| node_api_responses
node_feedback_routes -->|"formats response"| node_api_responses
node_billing_routes -->|"formats response"| node_api_responses

click node_dashboard "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/app/(dashboard)/opportunities/page.tsx"
click node_web_session "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/lib/session.ts"
click node_web_api "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/lib/api/client.ts"
click node_api_app "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/main.py"
click node_identity_routes "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/api/routes.py"
click node_authentication "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/api/auth.py"
click node_identity_service "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/application/service.py"
click node_opportunity_routes "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/opportunities/api/routes.py"
click node_opportunity_service "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/opportunities/application/service.py"
click node_catalog "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/catalog/application/service.py"
click node_feedback_routes "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/feedback/api/routes.py"
click node_feedback_service "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/feedback/application/service.py"
click node_alerts "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/alerts/application/service.py"
click node_billing_routes "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/billing/api/routes.py"
click node_billing_service "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/billing/application/service.py"
click node_integrations "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/integrations/application/service.py"
click node_admin_routes "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/operations/api/routes.py"
click node_admin_service "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/operations/application/admin_service.py"
click node_database "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/infrastructure/database.py"
click node_api_responses "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/infrastructure/api_response.py"
click node_worker "https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/worker/apps/worker/pipeline.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_dashboard,node_web_session,node_web_api,node_user toneBlue
class node_api_app,node_identity_routes,node_authentication,node_identity_service toneAmber
class node_opportunity_routes,node_opportunity_service,node_catalog,node_feedback_routes,node_feedback_service,node_alerts toneMint
class node_billing_routes,node_billing_service,node_integrations,node_admin_routes,node_admin_service toneRose
class node_database,node_api_responses,node_worker,node_paypal toneIndigo
```

## Components

### Web app

- [Dashboard pages](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/app/(dashboard)/opportunities/page.tsx): `apps/web/app/(dashboard)/opportunities/page.tsx`
- [Web session](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/lib/session.ts): `apps/web/lib/session.ts`
- [Web API client](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/web/lib/api/client.ts): `apps/web/lib/api/client.ts`

### API and identity

- [API application](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/main.py): `apps/api/apps/api/main.py`
- [Identity routes](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/api/routes.py): `apps/api/apps/api/identity/api/routes.py`
- [Authentication](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/api/auth.py): `apps/api/apps/api/identity/api/auth.py`
- [Identity service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/identity/application/service.py): `apps/api/apps/api/identity/application/service.py`

### Opportunity workflows

- [Opportunity routes](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/opportunities/api/routes.py): `apps/api/apps/api/opportunities/api/routes.py`
- [Opportunity service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/opportunities/application/service.py): `apps/api/apps/api/opportunities/application/service.py`
- [Catalog service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/catalog/application/service.py): `apps/api/apps/api/catalog/application/service.py`
- [Feedback routes](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/feedback/api/routes.py): `apps/api/apps/api/feedback/api/routes.py`
- [Feedback service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/feedback/application/service.py): `apps/api/apps/api/feedback/application/service.py`
- [Alerts service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/alerts/application/service.py): `apps/api/apps/api/alerts/application/service.py`

### Operations and billing

- [Billing routes](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/billing/api/routes.py): `apps/api/apps/api/billing/api/routes.py`
- [Billing service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/billing/application/service.py): `apps/api/apps/api/billing/application/service.py`
- [Integrations](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/integrations/application/service.py): `apps/api/apps/api/integrations/application/service.py`
- [Admin routes](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/operations/api/routes.py): `apps/api/apps/api/operations/api/routes.py`
- [Admin service](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/operations/application/admin_service.py): `apps/api/apps/api/operations/application/admin_service.py`

### Shared runtime

- [Database sessions](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/infrastructure/database.py): `apps/api/apps/api/infrastructure/database.py`
- [API responses](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/api/apps/api/infrastructure/api_response.py): `apps/api/apps/api/infrastructure/api_response.py`
- [Background worker](https://github.com/palakv07/watch-arbitrage-a/blob/main/apps/worker/apps/worker/pipeline.py): `apps/worker/apps/worker/pipeline.py`

### Other components

- **User**
- **PayPal**

## Connections

- User → Dashboard pages: uses
- Dashboard pages → Web session: uses session
- Dashboard pages → Web API client: requests data
- Web session → Identity routes: auth endpoints
- Web API client → API application: HTTP requests
- API application → Identity routes: registers routes (evidence: `apps/api/apps/api/main.py`)
- API application → Opportunity routes: registers routes (evidence: `apps/api/apps/api/main.py`)
- API application → Feedback routes: registers routes (evidence: `apps/api/apps/api/main.py`)
- API application → Billing routes: registers routes (evidence: `apps/api/apps/api/main.py`)
- Identity routes → Identity service: calls (evidence: `apps/api/apps/api/identity/api/routes.py`)
- Identity routes → Authentication: authenticates (evidence: `apps/api/apps/api/identity/api/routes.py`)
- Opportunity routes → Opportunity service: calls (evidence: `apps/api/apps/api/opportunities/api/routes.py`)
- Opportunity routes → Authentication: authorizes (evidence: `apps/api/apps/api/opportunities/api/routes.py`)
- Feedback routes → Feedback service: calls (evidence: `apps/api/apps/api/feedback/api/routes.py`)
- Feedback routes → Authentication: authorizes (evidence: `apps/api/apps/api/feedback/api/routes.py`)
- Billing routes → Billing service: calls (evidence: `apps/api/apps/api/billing/api/routes.py`)
- Billing routes → Authentication: authorizes (evidence: `apps/api/apps/api/billing/api/routes.py`)
- Billing service → PayPal: billing operations
- Admin routes → Admin service: calls (evidence: `apps/api/apps/api/operations/api/routes.py`)
- Admin routes → Authentication: authorizes (evidence: `apps/api/apps/api/operations/api/routes.py`)
- Identity routes → Database sessions: gets session (evidence: `apps/api/apps/api/identity/api/routes.py`)
- Opportunity routes → Database sessions: gets session (evidence: `apps/api/apps/api/opportunities/api/routes.py`)
- Feedback routes → Database sessions: gets session (evidence: `apps/api/apps/api/feedback/api/routes.py`)
- Billing routes → Database sessions: gets session (evidence: `apps/api/apps/api/billing/api/routes.py`)
- Opportunity routes → API responses: formats response (evidence: `apps/api/apps/api/opportunities/api/routes.py`)
- Feedback routes → API responses: formats response (evidence: `apps/api/apps/api/feedback/api/routes.py`)
- Billing routes → API responses: formats response (evidence: `apps/api/apps/api/billing/api/routes.py`)
