# sandeeppaldotnet/fakenewsdetection-mlnet-aspnet architecture

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

- Interactive diagram: https://gitdiagram.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet
- Repository: https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet

## Overview

FakeNewsTrainer is a two-part fake-news classification product: a console application trains and saves an ML.NET model, and an ASP.NET Core API loads that model to classify submitted articles. The main workflow runs from labeled CSV data through title-and-text combination and model training, then from an HTTP request through prediction to a response. Training and inference use separate model contracts. The source shows their respective artifact paths, but does not show deployment or artifact transfer between projects.

Main entry points: [`FakeNewsTrainer/FakeNewsTrainer/Program.cs`](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs) (Training app), [`FakeNewsTrainer/FakeNewsDetectionAPI/Controllers/FakeNewsController.cs`](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Controllers/FakeNewsController.cs) (News endpoint), [`FakeNewsTrainer/FakeNewsDetectionAPI/Models/PredictionService.cs`](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Models/PredictionService.cs) (Prediction service), [`FakeNewsTrainer/FakeNewsDetectionAPI/Program.cs`](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Program.cs) (API host)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_training["Model training"]
  node_trainer["Training app<br/>[Program.cs]"]
  node_dataset["Labeled articles"]
  node_preparation["Text preparation<br/>[Program.cs]"]
  node_classifier["ML.NET classifier<br/>[Program.cs]"]
  node_model_artifact["Trained model<br/>[fakenews_model.zip]"]
end

subgraph group_inference["Prediction API"]
  node_api_host["API host<br/>[Program.cs]"]
  node_controller["News endpoint"]
  node_prediction_service["Prediction service"]
end

subgraph group_contracts["Data contracts"]
  node_training_contract["Training types<br/>[models.cs]"]
  node_api_contract["API data types<br/>[models.cs]"]
end

node_client(("API client"))

node_trainer -->|"reads"| node_dataset
node_trainer -->|"loads as"| node_training_contract
node_trainer -->|"combines text"| node_preparation
node_preparation -->|"provides training data"| node_classifier
node_trainer -->|"fits pipeline"| node_classifier
node_trainer -->|"saves model"| node_model_artifact
node_api_host -->|"registers"| node_prediction_service
node_api_host -->|"routes requests"| node_controller
node_client -->|"posts article"| node_controller
node_controller -->|"accepts data"| node_api_contract
node_controller -->|"requests prediction"| node_prediction_service
node_prediction_service -->|"loads model"| node_model_artifact
node_prediction_service -->|"returns prediction"| node_api_contract
node_controller -->|"returns result"| node_client

click node_trainer "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs"
click node_dataset "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/fake_news_dataset.csv"
click node_preparation "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs"
click node_training_contract "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/models.cs"
click node_classifier "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs"
click node_model_artifact "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/fakenews_model.zip"
click node_api_host "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Program.cs"
click node_controller "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Controllers/FakeNewsController.cs"
click node_prediction_service "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Models/PredictionService.cs"
click node_api_contract "https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Models/models.cs"

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_trainer,node_dataset,node_preparation,node_classifier,node_model_artifact,node_client toneBlue
class node_api_host,node_controller,node_prediction_service toneAmber
class node_training_contract,node_api_contract toneMint
```

## Components

### Model training

- [Training app](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs): `FakeNewsTrainer/FakeNewsTrainer/Program.cs`
- [Labeled articles](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/fake_news_dataset.csv): `FakeNewsTrainer/FakeNewsTrainer/fake_news_dataset.csv`
- [Text preparation](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs): `FakeNewsTrainer/FakeNewsTrainer/Program.cs`
- [ML.NET classifier](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/Program.cs): `FakeNewsTrainer/FakeNewsTrainer/Program.cs`
- [Trained model](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/fakenews_model.zip): `FakeNewsTrainer/FakeNewsDetectionAPI/fakenews_model.zip`

### Prediction API

- [API host](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Program.cs): `FakeNewsTrainer/FakeNewsDetectionAPI/Program.cs`
- [News endpoint](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Controllers/FakeNewsController.cs): `FakeNewsTrainer/FakeNewsDetectionAPI/Controllers/FakeNewsController.cs`
- [Prediction service](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Models/PredictionService.cs): `FakeNewsTrainer/FakeNewsDetectionAPI/Models/PredictionService.cs`

### Data contracts

- [Training types](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsTrainer/models.cs): `FakeNewsTrainer/FakeNewsTrainer/models.cs`
- [API data types](https://github.com/sandeeppaldotnet/fakenewsdetection-mlnet-aspnet/blob/main/FakeNewsTrainer/FakeNewsDetectionAPI/Models/models.cs): `FakeNewsTrainer/FakeNewsDetectionAPI/Models/models.cs`

### Other components

- **API client**

## Connections

- Training app → Labeled articles: reads
- Training app → Training types: loads as
- Training app → Text preparation: combines text
- Text preparation → ML.NET classifier: provides training data
- Training app → ML.NET classifier: fits pipeline
- Training app → Trained model: saves model
- API host → Prediction service: registers
- API host → News endpoint: routes requests
- API client → News endpoint: posts article
- News endpoint → API data types: accepts data
- News endpoint → Prediction service: requests prediction
- Prediction service → Trained model: loads model
- Prediction service → API data types: returns prediction
- News endpoint → API client: returns result
