# saqib-nawab/curoxity- architecture

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

- Interactive diagram: https://gitdiagram.com/saqib-nawab/curoxity-
- Repository: https://github.com/saqib-nawab/curoxity-

## Overview

This repository is a clinical-trial discovery application with account management. The main user journey submits a query, elicits or structures PICOT intent, retrieves and ranks trial evidence, and presents results and trial details. The frontend proxy and authentication flow, plus the backend auth service’s Elasticsearch use, are supported by sampled source. The README is empty; several discovery modules are identified by the tree and retrieval’s description, but their exact orchestration and call relationships were not inspected, so those links are omitted where uncertain.

Main entry points: [`backend/retrieval.py`](https://github.com/saqib-nawab/curoxity-/blob/main/backend/retrieval.py) (Trial index), [`frontend/app/page.tsx`](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/page.tsx) (Discovery home), [`frontend/app/api/userquery/route.ts`](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/api/userquery/route.ts) (Query proxy), [`frontend/src/components/SearchResultCard.tsx`](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/components/SearchResultCard.tsx) (Trial result card)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Trial discovery"]
  node_api["Backend API<br/>[api.py]"]
  node_elicitation["Intent elicitation"]
  node_picot["PICOT modeling<br/>[PICOT.py]"]
  node_retrieval["Trial retrieval<br/>[retrieval.py]"]
  node_reranker["Result reranking<br/>[reranker.py]"]
  node_rankintegration["Ranking integration"]
  node_triales[("Trial index<br/>[retrieval.py]")]
end

subgraph group_presentation["User experience"]
  node_home["Discovery home<br/>[page.tsx]"]
  node_queryproxy["Query proxy<br/>[route.ts]"]
  node_results["Search results<br/>[page.tsx]"]
  node_resultcard["Trial result card"]
  node_trialdetail["Trial details<br/>[page.tsx]"]
  node_trialbrowse["Trial browsing<br/>[page.tsx]"]
  node_diseasebrowse["Disease trials<br/>[page.tsx]"]
end

subgraph group_identity["Authentication"]
  node_signup["Sign-up form<br/>[AuthForm.tsx]"]
  node_authstate["Auth state<br/>[authSlice.ts]"]
  node_authproxy["Auth routes<br/>[route.ts]"]
end

subgraph group_backend["Backend services"]
  node_authrouter["Auth API<br/>[router.py]"]
  node_authservice["Auth service<br/>[service.py]"]
  node_authes[("Auth user index<br/>[es_client.py]")]
end

node_user(("Trial seeker"))
node_elasticsearch[("Elasticsearch")]

node_user -->|"browses"| node_home
node_home -->|"submits query"| node_queryproxy
node_queryproxy -->|"forwards request"| node_api
node_retrieval -->|"queries chunks"| node_triales
node_triales -->|"reads"| node_elasticsearch
node_results -->|"renders trials"| node_resultcard
node_resultcard -->|"opens trial"| node_trialdetail
node_user -->|"browses trials"| node_trialbrowse
node_user -->|"browses condition"| node_diseasebrowse
node_user -->|"enters credentials"| node_signup
node_signup -->|"dispatches auth"| node_authstate
node_authstate -->|"requests auth"| node_authproxy
node_authproxy -->|"proxies request"| node_authrouter
node_authrouter -->|"invokes service"| node_authservice
node_authservice -->|"reads and writes users"| node_authes
node_authes -->|"connects"| node_elasticsearch

click node_home "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/page.tsx"
click node_queryproxy "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/api/userquery/route.ts"
click node_api "https://github.com/saqib-nawab/curoxity-/blob/main/backend/api.py"
click node_elicitation "https://github.com/saqib-nawab/curoxity-/blob/main/backend/intent_elicitation.py"
click node_picot "https://github.com/saqib-nawab/curoxity-/blob/main/backend/PICOT.py"
click node_retrieval "https://github.com/saqib-nawab/curoxity-/blob/main/backend/retrieval.py"
click node_reranker "https://github.com/saqib-nawab/curoxity-/blob/main/backend/reranker.py"
click node_rankintegration "https://github.com/saqib-nawab/curoxity-/blob/main/backend/reranker_integrater.py"
click node_results "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/search-results/page.tsx"
click node_resultcard "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/components/SearchResultCard.tsx"
click node_trialdetail "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trial-detail/%5Bid%5D/page.tsx"
click node_trialbrowse "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trials/page.tsx"
click node_diseasebrowse "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trials/%5Bdisease%5D/page.tsx"
click node_signup "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/components/auth/AuthForm.tsx"
click node_authstate "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/store/authSlice.ts"
click node_authproxy "https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/api/auth/signin/route.ts"
click node_authrouter "https://github.com/saqib-nawab/curoxity-/blob/main/backend/auth/router.py"
click node_authservice "https://github.com/saqib-nawab/curoxity-/blob/main/backend/auth/service.py"
click node_authes "https://github.com/saqib-nawab/curoxity-/blob/main/backend/core/es_client.py"
click node_triales "https://github.com/saqib-nawab/curoxity-/blob/main/backend/retrieval.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_api,node_elicitation,node_picot,node_retrieval,node_reranker,node_rankintegration,node_triales toneBlue
class node_home,node_queryproxy,node_results,node_resultcard,node_trialdetail,node_trialbrowse,node_diseasebrowse,node_elasticsearch toneAmber
class node_signup,node_authstate,node_authproxy toneMint
class node_authrouter,node_authservice,node_authes toneRose
class node_user toneIndigo
```

## Components

### Trial discovery

- [Backend API](https://github.com/saqib-nawab/curoxity-/blob/main/backend/api.py): `backend/api.py`
- [Intent elicitation](https://github.com/saqib-nawab/curoxity-/blob/main/backend/intent_elicitation.py): `backend/intent_elicitation.py`
- [PICOT modeling](https://github.com/saqib-nawab/curoxity-/blob/main/backend/PICOT.py): `backend/PICOT.py`
- [Trial retrieval](https://github.com/saqib-nawab/curoxity-/blob/main/backend/retrieval.py): `backend/retrieval.py`
- [Result reranking](https://github.com/saqib-nawab/curoxity-/blob/main/backend/reranker.py): `backend/reranker.py`
- [Ranking integration](https://github.com/saqib-nawab/curoxity-/blob/main/backend/reranker_integrater.py): `backend/reranker_integrater.py`
- [Trial index](https://github.com/saqib-nawab/curoxity-/blob/main/backend/retrieval.py): `backend/retrieval.py`

### User experience

- [Discovery home](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/page.tsx): `frontend/app/page.tsx`
- [Query proxy](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/api/userquery/route.ts): `frontend/app/api/userquery/route.ts`
- [Search results](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/search-results/page.tsx): `frontend/app/search-results/page.tsx`
- [Trial result card](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/components/SearchResultCard.tsx): `frontend/src/components/SearchResultCard.tsx`
- [Trial details](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trial-detail/%5Bid%5D/page.tsx): `frontend/app/trial-detail/[id]/page.tsx`
- [Trial browsing](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trials/page.tsx): `frontend/app/trials/page.tsx`
- [Disease trials](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/trials/%5Bdisease%5D/page.tsx): `frontend/app/trials/[disease]/page.tsx`

### Authentication

- [Sign-up form](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/components/auth/AuthForm.tsx): `frontend/src/components/auth/AuthForm.tsx`
- [Auth state](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/src/store/authSlice.ts): `frontend/src/store/authSlice.ts`
- [Auth routes](https://github.com/saqib-nawab/curoxity-/blob/main/frontend/app/api/auth/signin/route.ts): `frontend/app/api/auth/signin/route.ts`

### Backend services

- [Auth API](https://github.com/saqib-nawab/curoxity-/blob/main/backend/auth/router.py): `backend/auth/router.py`
- [Auth service](https://github.com/saqib-nawab/curoxity-/blob/main/backend/auth/service.py): `backend/auth/service.py`
- [Auth user index](https://github.com/saqib-nawab/curoxity-/blob/main/backend/core/es_client.py): `backend/core/es_client.py`

### Other components

- **Trial seeker**
- **Elasticsearch**

## Connections

- Trial seeker → Discovery home: browses
- Discovery home → Query proxy: submits query
- Query proxy → Backend API: forwards request
- Trial retrieval → Trial index: queries chunks
- Trial index → Elasticsearch: reads
- Search results → Trial result card: renders trials
- Trial result card → Trial details: opens trial
- Trial seeker → Trial browsing: browses trials
- Trial seeker → Disease trials: browses condition
- Trial seeker → Sign-up form: enters credentials
- Sign-up form → Auth state: dispatches auth
- Auth state → Auth routes: requests auth
- Auth routes → Auth API: proxies request
- Auth API → Auth service: invokes service
- Auth service → Auth user index: reads and writes users
- Auth user index → Elasticsearch: connects
