# saiadarsh16/home_take_assessment architecture

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

- Interactive diagram: https://gitdiagram.com/saiadarsh16/home_take_assessment
- Repository: https://github.com/saiadarsh16/home_take_assessment
- Video tour (about a minute): https://gitdiagram.com/saiadarsh16/home_take_assessment/video

## Overview

This repository is a multi-model computer-vision inference API plus a model preparation and validation workflow. The main runtime flow accepts authenticated image requests, runs classification, detection, or embedding inference, and returns results; similarity additionally indexes or searches a caller-scoped gallery, while batch requests are queued and processed asynchronously. The graph includes the documented model lifecycle as a separate capability. Several router, queue, and model-authoring implementations were not sampled, so their internal wiring is shown only where the README or sampled code supports it.

Main entry points: [`api/services/inference_service.py`](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/inference_service.py) (Inference service), [`api/main.py`](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/main.py) (FastAPI app), [`api/routers/similarity.py`](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/similarity.py) (Similarity routes), [`api/utils/image_processing.py`](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/utils/image_processing.py) (Image validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["API and Access"]
  node_app["FastAPI app<br/>[main.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_classify["Classification route<br/>[classification.py]"]
  node_detect["Detection route<br/>[detection.py]"]
  node_similarity["Similarity routes<br/>[similarity.py]"]
  node_batch["Batch routes<br/>[batch.py]"]
end

subgraph group_infer["Inference and Models"]
  node_images["Image validation"]
  node_inference["Inference service"]
  node_models["Model serving<br/>[model_service.py]"]
  node_artifacts["Model artifacts"]
end

subgraph group_jobs["Batch Processing"]
  node_dispatcher["Job dispatch<br/>[dispatcher.py]"]
  node_worker["Batch worker<br/>[worker.py]"]
  node_joblogic["Job execution<br/>[jobs.py]"]
end

subgraph group_state["State and Operations"]
  node_gallery[("Similarity gallery<br/>[database.py]")]
  node_cache["Cache and quotas<br/>[cache_service.py]"]
  node_database[("Job and audit store<br/>[database.py]")]
  node_telemetry["Telemetry<br/>[telemetry.py]"]
end

subgraph group_lifecycle["Model Lifecycle"]
  node_dataset["Data preparation<br/>[prepare.py]"]
  node_training["Model training<br/>[train.py]"]
  node_export["Backend export<br/>[export.py]"]
  node_evaluation["Model evaluation<br/>[validate.py]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_app
node_app -->|"authenticates"| node_auth
node_app -->|"dispatches"| node_classify
node_app -->|"dispatches"| node_detect
node_app -->|"dispatches"| node_similarity
node_app -->|"dispatches"| node_batch
node_classify -->|"reads upload"| node_images
node_classify -->|"runs task"| node_inference
node_detect -->|"reads upload"| node_images
node_detect -->|"runs task"| node_inference
node_similarity -->|"reads upload"| node_images
node_similarity -->|"runs task"| node_inference
node_similarity -->|"reads and writes"| node_gallery
node_inference -->|"decodes image"| node_images
node_inference -->|"predicts"| node_models
node_inference -->|"reads and writes"| node_cache
node_inference -->|"audits inference"| node_database
node_inference -->|"records metrics"| node_telemetry
node_models -->|"loads weights"| node_artifacts
node_batch -->|"submits jobs"| node_dispatcher
node_dispatcher -->|"stores job"| node_database
node_dispatcher -->|"queues job"| node_worker
node_worker -->|"executes job"| node_joblogic
node_joblogic -->|"runs items"| node_inference
node_joblogic -->|"updates job"| node_database
node_dataset -->|"supplies data"| node_training
node_training -->|"produces weights"| node_export
node_export -->|"exports for checks"| node_evaluation
node_export -->|"writes artifacts"| node_artifacts

click node_app "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/main.py"
click node_auth "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/middleware/auth.py"
click node_classify "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/classification.py"
click node_detect "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/detection.py"
click node_similarity "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/similarity.py"
click node_batch "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/batch.py"
click node_images "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/utils/image_processing.py"
click node_inference "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/inference_service.py"
click node_models "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/model_service.py"
click node_artifacts "https://github.com/saiadarsh16/home_take_assessment/tree/main/models"
click node_gallery "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/database.py"
click node_cache "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/cache_service.py"
click node_database "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/database.py"
click node_telemetry "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/telemetry.py"
click node_dispatcher "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/dispatcher.py"
click node_worker "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/worker.py"
click node_joblogic "https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/jobs.py"
click node_dataset "https://github.com/saiadarsh16/home_take_assessment/blob/main/models/prepare.py"
click node_training "https://github.com/saiadarsh16/home_take_assessment/blob/main/models/train.py"
click node_export "https://github.com/saiadarsh16/home_take_assessment/blob/main/models/export.py"
click node_evaluation "https://github.com/saiadarsh16/home_take_assessment/blob/main/models/validate.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_classify,node_detect,node_similarity,node_batch,node_client toneBlue
class node_images,node_inference,node_models,node_artifacts toneAmber
class node_dispatcher,node_worker,node_joblogic toneMint
class node_gallery,node_cache,node_database,node_telemetry toneRose
class node_dataset,node_training,node_export,node_evaluation toneIndigo
```

## Components

### API and Access

- [FastAPI app](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/main.py): `api/main.py`
- [Authentication](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/middleware/auth.py): `api/middleware/auth.py`
- [Classification route](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/classification.py): `api/routers/classification.py`
- [Detection route](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/detection.py): `api/routers/detection.py`
- [Similarity routes](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/similarity.py): `api/routers/similarity.py`
- [Batch routes](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/routers/batch.py): `api/routers/batch.py`

### Inference and Models

- [Image validation](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/utils/image_processing.py): `api/utils/image_processing.py`
- [Inference service](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/inference_service.py): `api/services/inference_service.py`
- [Model serving](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/model_service.py): `api/services/model_service.py`
- [Model artifacts](https://github.com/saiadarsh16/home_take_assessment/tree/main/models): `models`

### Batch Processing

- [Job dispatch](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/dispatcher.py): `api/dispatcher.py`
- [Batch worker](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/worker.py): `api/worker.py`
- [Job execution](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/jobs.py): `api/services/jobs.py`

### State and Operations

- [Similarity gallery](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/database.py): `api/services/database.py`
- [Cache and quotas](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/cache_service.py): `api/services/cache_service.py`
- [Job and audit store](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/database.py): `api/services/database.py`
- [Telemetry](https://github.com/saiadarsh16/home_take_assessment/blob/main/api/services/telemetry.py): `api/services/telemetry.py`

### Model Lifecycle

- [Data preparation](https://github.com/saiadarsh16/home_take_assessment/blob/main/models/prepare.py): `models/prepare.py`
- [Model training](https://github.com/saiadarsh16/home_take_assessment/blob/main/models/train.py): `models/train.py`
- [Backend export](https://github.com/saiadarsh16/home_take_assessment/blob/main/models/export.py): `models/export.py`
- [Model evaluation](https://github.com/saiadarsh16/home_take_assessment/blob/main/models/validate.py): `models/validate.py`

### Other components

- **API client**

## Connections

- API client → FastAPI app: sends requests
- FastAPI app → Authentication: authenticates
- FastAPI app → Classification route: dispatches
- FastAPI app → Detection route: dispatches
- FastAPI app → Similarity routes: dispatches
- FastAPI app → Batch routes: dispatches
- Classification route → Image validation: reads upload
- Classification route → Inference service: runs task
- Detection route → Image validation: reads upload
- Detection route → Inference service: runs task
- Similarity routes → Image validation: reads upload
- Similarity routes → Inference service: runs task
- Similarity routes → Similarity gallery: reads and writes
- Inference service → Image validation: decodes image
- Inference service → Model serving: predicts
- Inference service → Cache and quotas: reads and writes
- Inference service → Job and audit store: audits inference
- Inference service → Telemetry: records metrics
- Model serving → Model artifacts: loads weights
- Batch routes → Job dispatch: submits jobs
- Job dispatch → Job and audit store: stores job
- Job dispatch → Batch worker: queues job
- Batch worker → Job execution: executes job
- Job execution → Inference service: runs items
- Job execution → Job and audit store: updates job
- Data preparation → Model training: supplies data
- Model training → Backend export: produces weights
- Backend export → Model evaluation: exports for checks
- Backend export → Model artifacts: writes artifacts
