# breaseabrol/houseprice-api architecture

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

- Interactive diagram: https://gitdiagram.com/breaseabrol/houseprice-api
- Repository: https://github.com/breaseabrol/houseprice-api

## Overview

This repository provides a housing-price prediction API and its model-training workflow. The training notebook prepares data, engineers features, trains and validates an XGBoost model, then saves model and scaler artifacts; the API loads those artifacts, validates requests, engineers inference features, and returns predictions. README documents Docker, Kubernetes, and Cloud Run deployment paths. Runtime behavior is evidenced by the excerpted main.py; training and deployment connections are documented in the README, since their implementation files were not sampled.

Main entry points: [`main.py`](https://github.com/breaseabrol/houseprice-api/blob/main/main.py) (Prediction endpoint), [`Project.ipynb`](https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb) (Training workflow), [`Dockerfile`](https://github.com/breaseabrol/houseprice-api/blob/main/Dockerfile) (Docker image), [`deployment.yaml`](https://github.com/breaseabrol/houseprice-api/blob/main/deployment.yaml) (Kubernetes deployment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_training["Model training"]
  node_dataset["Housing data<br/>[Housing.csv]"]
  node_training_workflow["Training workflow<br/>[Project.ipynb]"]
  node_preprocessing["Data preprocessing<br/>[Project.ipynb]"]
  node_training_features["Feature engineering<br/>[Project.ipynb]"]
  node_model_training["Model training<br/>[Project.ipynb]"]
  node_artifacts["Model artifacts"]
end

subgraph group_serving["Prediction API"]
  node_api["Prediction endpoint<br/>[main.py]"]
  node_validation["Request validation<br/>[main.py]"]
  node_inference_features["Inference features<br/>[main.py]"]
  node_inference["Model inference<br/>[main.py]"]
  node_response["Prediction response<br/>[main.py]"]
end

subgraph group_deployment["Deployment"]
  node_docker["Docker image"]
  node_kubernetes["Kubernetes deployment<br/>[deployment.yaml]"]
  node_k8s_service["LoadBalancer service<br/>[service.yaml]"]
  node_cloud_run["Cloud Run"]
  node_artifact_registry["Artifact Registry"]
end

node_client(("API client"))

node_dataset -.->|"loads data"| node_training_workflow
node_training_workflow -.->|"performs"| node_preprocessing
node_training_workflow -.->|"performs"| node_training_features
node_training_workflow -.->|"trains and validates"| node_model_training
node_training_workflow -.->|"serializes"| node_artifacts
node_client -->|"sends request"| node_api
node_api -->|"validates"| node_validation
node_api -->|"engineers features"| node_inference_features
node_api -->|"calls predict"| node_inference
node_artifacts -->|"loaded at startup"| node_api
node_api -->|"returns prediction"| node_response
node_docker -.->|"deploys image"| node_kubernetes
node_kubernetes -.->|"exposes service"| node_k8s_service
node_docker -.->|"pushes image"| node_artifact_registry
node_artifact_registry -.->|"deploys image"| node_cloud_run

click node_dataset "https://github.com/breaseabrol/houseprice-api/blob/main/data/Housing.csv"
click node_training_workflow "https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb"
click node_preprocessing "https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb"
click node_training_features "https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb"
click node_model_training "https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb"
click node_api "https://github.com/breaseabrol/houseprice-api/blob/main/main.py"
click node_validation "https://github.com/breaseabrol/houseprice-api/blob/main/main.py"
click node_inference_features "https://github.com/breaseabrol/houseprice-api/blob/main/main.py"
click node_inference "https://github.com/breaseabrol/houseprice-api/blob/main/main.py"
click node_response "https://github.com/breaseabrol/houseprice-api/blob/main/main.py"
click node_docker "https://github.com/breaseabrol/houseprice-api/blob/main/Dockerfile"
click node_kubernetes "https://github.com/breaseabrol/houseprice-api/blob/main/deployment.yaml"
click node_k8s_service "https://github.com/breaseabrol/houseprice-api/blob/main/service.yaml"

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_dataset,node_training_workflow,node_preprocessing,node_training_features,node_model_training,node_artifacts,node_client toneBlue
class node_api,node_validation,node_inference_features,node_inference,node_response toneAmber
class node_docker,node_kubernetes,node_k8s_service,node_cloud_run,node_artifact_registry toneMint
```

## Components

### Model training

- [Housing data](https://github.com/breaseabrol/houseprice-api/blob/main/data/Housing.csv): `data/Housing.csv`
- [Training workflow](https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb): `Project.ipynb`
- [Data preprocessing](https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb): `Project.ipynb`
- [Feature engineering](https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb): `Project.ipynb`
- [Model training](https://github.com/breaseabrol/houseprice-api/blob/main/Project.ipynb): `Project.ipynb`
- **Model artifacts**

### Prediction API

- [Prediction endpoint](https://github.com/breaseabrol/houseprice-api/blob/main/main.py): `main.py`
- [Request validation](https://github.com/breaseabrol/houseprice-api/blob/main/main.py): `main.py`
- [Inference features](https://github.com/breaseabrol/houseprice-api/blob/main/main.py): `main.py`
- [Model inference](https://github.com/breaseabrol/houseprice-api/blob/main/main.py): `main.py`
- [Prediction response](https://github.com/breaseabrol/houseprice-api/blob/main/main.py): `main.py`

### Deployment

- [Docker image](https://github.com/breaseabrol/houseprice-api/blob/main/Dockerfile): `Dockerfile`
- [Kubernetes deployment](https://github.com/breaseabrol/houseprice-api/blob/main/deployment.yaml): `deployment.yaml`
- [LoadBalancer service](https://github.com/breaseabrol/houseprice-api/blob/main/service.yaml): `service.yaml`
- **Cloud Run**
- **Artifact Registry**

### Other components

- **API client**

## Connections

- Housing data → Training workflow: loads data (evidence: `README.md`)
- Training workflow → Data preprocessing: performs (evidence: `README.md`)
- Training workflow → Feature engineering: performs (evidence: `README.md`)
- Training workflow → Model training: trains and validates (evidence: `README.md`)
- Training workflow → Model artifacts: serializes (evidence: `README.md`)
- API client → Prediction endpoint: sends request (evidence: `README.md`)
- Prediction endpoint → Request validation: validates (evidence: `main.py`)
- Prediction endpoint → Inference features: engineers features (evidence: `main.py`)
- Prediction endpoint → Model inference: calls predict (evidence: `main.py`)
- Model artifacts → Prediction endpoint: loaded at startup (evidence: `main.py`)
- Prediction endpoint → Prediction response: returns prediction (evidence: `main.py`)
- Docker image → Kubernetes deployment: deploys image (evidence: `README.md`)
- Kubernetes deployment → LoadBalancer service: exposes service (evidence: `README.md`)
- Docker image → Artifact Registry: pushes image (evidence: `README.md`)
- Artifact Registry → Cloud Run: deploys image (evidence: `README.md`)
