# 000jd/landslidepredictor--solution-for-landslide-risk-prediction architecture

> Architecture diagram of the GitHub repository 000jd/landslidepredictor--solution-for-landslide-risk-prediction, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction
- Repository: https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction

## Overview

Landslide Predictor combines a browser-based risk assessment interface, a FastAPI inference service, and an offline ML training/evaluation pipeline. The main user flow is entering terrain, environmental, and geological inputs, selecting a model, requesting a prediction, and viewing risk results. Training separately ingests and preprocesses data, fits a selected model with optional tuning, saves it, and evaluates it. The graph includes documented capabilities and source-index-supported links; unsampled frontend and server wiring is shown only where documented or marked unverified.

Main entry points: [`frontend/src/pages/Predict.tsx`](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/pages/Predict.tsx) (Prediction form), [`run_pipeline.py`](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/run_pipeline.py) (Training entrypoint), [`src/train.py`](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/train.py) (Training orchestration), [`frontend/src/components/features`](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/tree/main/frontend/src/components/features) (Feature inputs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Risk assessment UI"]
  node_app["Frontend router<br/>[App.tsx]"]
  node_predict_ui["Prediction form<br/>[Predict.tsx]"]
  node_feature_ui["Feature inputs"]
  node_feature_card["Feature card<br/>[FeatureCard.tsx]"]
  node_value_slider["Value slider<br/>[ValueSlider.tsx]"]
  node_info_tooltip["Input guidance<br/>[InfoTooltip.tsx]"]
  node_model_selector["Model selector<br/>[ModelSelector.tsx]"]
  node_api_client["API client<br/>[apiService.ts]"]
  node_results["Risk results<br/>[Results.tsx]"]
end

subgraph group_serving["Prediction service"]
  node_server["FastAPI server<br/>[server.py]"]
  node_prediction_routes["Prediction endpoints<br/>[predictions.py]"]
  node_schemas["Request schemas<br/>[schemas.py]"]
  node_model_service["Inference service<br/>[model_service.py]"]
  node_saved_models[("Saved model files")]
end

subgraph group_training["Model training"]
  node_pipeline_entry["Training entrypoint<br/>[run_pipeline.py]"]
  node_data_loader["Data ingestion<br/>[data_loader.py]"]
  node_preprocessing["Preprocessing split<br/>[data_pipeline.py]"]
  node_trainer["Training orchestration<br/>[train.py]"]
  node_tuner["Hyperparameter tuning<br/>[tuner.py]"]
  node_evaluation["Model evaluation<br/>[evaluation.py]"]
  node_model_utils["Model persistence<br/>[utils.py]"]
end

subgraph group_ml["Model implementations"]
  node_model_factory["Model factory<br/>[model_factory.py]"]
  node_model_contract["Model contract<br/>[base_model.py]"]
  node_model_families["Regressor models"]
  node_model_config["Model configuration<br/>[model_config.py]"]
end

node_user(("Risk assessor"))

node_user -->|"enters inputs"| node_predict_ui
node_app -->|"routes to"| node_predict_ui
node_app -->|"routes to"| node_results
node_feature_ui -->|"uses"| node_feature_card
node_feature_ui -->|"uses"| node_value_slider
node_feature_ui -->|"uses"| node_info_tooltip
node_predict_ui -.->|"collects features"| node_feature_ui
node_predict_ui -.->|"selects model"| node_model_selector
node_predict_ui -.->|"requests prediction"| node_api_client
node_api_client -.->|"calls API"| node_server
node_server -->|"registers routes"| node_prediction_routes
node_prediction_routes -->|"validates payload"| node_schemas
node_prediction_routes -->|"dispatches prediction"| node_model_service
node_model_service -->|"loads model"| node_saved_models
node_results -.->|"shows risk"| node_user
node_pipeline_entry -->|"ingests data"| node_data_loader
node_data_loader -->|"preprocesses and splits"| node_preprocessing
node_pipeline_entry -->|"trains model"| node_trainer
node_trainer -->|"creates model"| node_model_factory
node_trainer -->|"tunes optionally"| node_tuner
node_tuner -.->|"optimizes trials"| node_model_families
node_model_factory -->|"selects implementation"| node_model_families
node_model_families -->|"implements"| node_model_contract
node_model_factory -->|"reads configuration"| node_model_config
node_trainer -->|"saves model"| node_model_utils
node_pipeline_entry -->|"scores test predictions"| node_evaluation
node_pipeline_entry -->|"configures run"| node_model_config

click node_app "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/App.tsx"
click node_predict_ui "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/pages/Predict.tsx"
click node_feature_ui "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/tree/main/frontend/src/components/features"
click node_feature_card "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/FeatureCard.tsx"
click node_value_slider "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/ValueSlider.tsx"
click node_info_tooltip "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/InfoTooltip.tsx"
click node_model_selector "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ModelSelector.tsx"
click node_api_client "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/services/apiService.ts"
click node_results "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/pages/Results.tsx"
click node_server "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/server.py"
click node_prediction_routes "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/routers/predictions.py"
click node_schemas "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/models/schemas.py"
click node_model_service "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/services/model_service.py"
click node_pipeline_entry "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/run_pipeline.py"
click node_data_loader "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/data/data_loader.py"
click node_preprocessing "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/data/data_pipeline.py"
click node_trainer "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/train.py"
click node_tuner "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/optimize/tuner.py"
click node_evaluation "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/evaluation.py"
click node_model_factory "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/models/model_factory.py"
click node_model_contract "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/models/base_model.py"
click node_model_families "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/tree/main/src/models"
click node_model_config "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/config/model_config.py"
click node_model_utils "https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/utils.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_predict_ui,node_feature_ui,node_feature_card,node_value_slider,node_info_tooltip,node_model_selector,node_api_client,node_results toneBlue
class node_server,node_prediction_routes,node_schemas,node_model_service,node_saved_models toneAmber
class node_pipeline_entry,node_data_loader,node_preprocessing,node_trainer,node_tuner,node_evaluation,node_model_utils toneMint
class node_model_factory,node_model_contract,node_model_families,node_model_config toneRose
class node_user toneIndigo
```

## Components

### Risk assessment UI

- [Frontend router](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Prediction form](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/pages/Predict.tsx): `frontend/src/pages/Predict.tsx`
- [Feature inputs](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/tree/main/frontend/src/components/features): `frontend/src/components/features`
- [Feature card](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/FeatureCard.tsx): `frontend/src/components/ui/FeatureCard.tsx`
- [Value slider](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/ValueSlider.tsx): `frontend/src/components/ui/ValueSlider.tsx`
- [Input guidance](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ui/InfoTooltip.tsx): `frontend/src/components/ui/InfoTooltip.tsx`
- [Model selector](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/components/ModelSelector.tsx): `frontend/src/components/ModelSelector.tsx`
- [API client](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/services/apiService.ts): `frontend/src/services/apiService.ts`
- [Risk results](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/frontend/src/pages/Results.tsx): `frontend/src/pages/Results.tsx`

### Prediction service

- [FastAPI server](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/server.py): `server.py`
- [Prediction endpoints](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/routers/predictions.py): `api/routers/predictions.py`
- [Request schemas](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/models/schemas.py): `api/models/schemas.py`
- [Inference service](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/api/services/model_service.py): `api/services/model_service.py`
- **Saved model files**

### Model training

- [Training entrypoint](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/run_pipeline.py): `run_pipeline.py`
- [Data ingestion](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/data/data_loader.py): `src/data/data_loader.py`
- [Preprocessing split](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/data/data_pipeline.py): `src/data/data_pipeline.py`
- [Training orchestration](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/train.py): `src/train.py`
- [Hyperparameter tuning](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/optimize/tuner.py): `src/optimize/tuner.py`
- [Model evaluation](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/evaluation.py): `src/evaluation.py`
- [Model persistence](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/utils.py): `src/utils.py`

### Model implementations

- [Model factory](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/models/model_factory.py): `src/models/model_factory.py`
- [Model contract](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/models/base_model.py): `src/models/base_model.py`
- [Regressor models](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/tree/main/src/models): `src/models`
- [Model configuration](https://github.com/000jd/landslidepredictor--solution-for-landslide-risk-prediction/blob/main/src/config/model_config.py): `src/config/model_config.py`

### Other components

- **Risk assessor**

## Connections

- Risk assessor → Prediction form: enters inputs (evidence: `README.md`)
- Frontend router → Prediction form: routes to (evidence: `frontend/src/App.tsx`)
- Frontend router → Risk results: routes to (evidence: `frontend/src/App.tsx`)
- Feature inputs → Feature card: uses (evidence: `frontend/src/components/features/EnvironmentalFeatures.tsx`)
- Feature inputs → Value slider: uses (evidence: `frontend/src/components/features/EnvironmentalFeatures.tsx`)
- Feature inputs → Input guidance: uses (evidence: `frontend/src/components/features/EnvironmentalFeatures.tsx`)
- Prediction form → Feature inputs: collects features
- Prediction form → Model selector: selects model
- Prediction form → API client: requests prediction
- API client → FastAPI server: calls API
- FastAPI server → Prediction endpoints: registers routes (evidence: `server.py`)
- Prediction endpoints → Request schemas: validates payload (evidence: `api/routers/predictions.py`)
- Prediction endpoints → Inference service: dispatches prediction (evidence: `api/routers/predictions.py`)
- Inference service → Saved model files: loads model (evidence: `api/services/model_service.py`)
- Risk results → Risk assessor: shows risk
- Training entrypoint → Data ingestion: ingests data (evidence: `run_pipeline.py`)
- Data ingestion → Preprocessing split: preprocesses and splits (evidence: `src/data/data_loader.py`)
- Training entrypoint → Training orchestration: trains model (evidence: `run_pipeline.py`)
- Training orchestration → Model factory: creates model (evidence: `src/train.py`)
- Training orchestration → Hyperparameter tuning: tunes optionally (evidence: `src/train.py`)
- Hyperparameter tuning → Regressor models: optimizes trials
- Model factory → Regressor models: selects implementation (evidence: `src/models/model_factory.py`)
- Regressor models → Model contract: implements (evidence: `src/models/random_forest.py`)
- Model factory → Model configuration: reads configuration (evidence: `src/models/model_factory.py`)
- Training orchestration → Model persistence: saves model (evidence: `src/train.py`)
- Training entrypoint → Model evaluation: scores test predictions (evidence: `run_pipeline.py`)
- Training entrypoint → Model configuration: configures run (evidence: `run_pipeline.py`)
