# saqibsattar03/masterproject architecture

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

- Interactive diagram: https://gitdiagram.com/saqibsattar03/masterproject
- Repository: https://github.com/saqibsattar03/masterproject

## Overview

This repository is a SQL-injection detection project with two workflows: a Flask endpoint that classifies submitted queries using a saved hybrid model, and an offline workflow that prepares labeled data, trains CNN/LSTM/hybrid models, and evaluates their performance. The graph also shows the saved model and preprocessing artifacts shared with inference. API behavior is visible in app.py; offline relationships are based on the sampled source and README. The README describes simulated blocking, not an implemented firewall integration.

Main entry points: [`src/main.py`](https://github.com/saqibsattar03/masterproject/blob/master/src/main.py) (Training Orchestrator), [`src/preprocessing.py`](https://github.com/saqibsattar03/masterproject/blob/master/src/preprocessing.py) (Dataset Preparation), [`app.py`](https://github.com/saqibsattar03/masterproject/blob/master/app.py) (Detection API), [`src/results/visualizations.py`](https://github.com/saqibsattar03/masterproject/blob/master/src/results/visualizations.py) (Result Visualizations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inference["Live Detection"]
  node_flask_api["Detection API<br/>[app.py]"]
  node_query_prep["Query Preprocessing<br/>[app.py]"]
  node_hybrid_infer["Hybrid Inference<br/>[app.py]"]
  node_response["Detection Result<br/>[app.py]"]
end

subgraph group_training["Model Training"]
  node_training_entry["Training Orchestrator<br/>[main.py]"]
  node_preprocessing["Dataset Preparation<br/>[preprocessing.py]"]
  node_model_build["Model Architectures<br/>[train_model.py]"]
  node_model_train["Model Training<br/>[train_model.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_evaluation["Metrics Evaluation<br/>[visualizations.py]"]
  node_result_plots["Result Visualizations<br/>[visualizations.py]"]
end

subgraph group_artifacts["Data and Artifacts"]
  node_dataset[("SQLi Dataset")]
  node_tokenizer["Saved Tokenizer<br/>[tokenizer.pkl]"]
  node_config["Sequence Config<br/>[config.json]"]
  node_saved_models["Trained Models"]
end

node_client(("API Client"))

node_client -->|"POST query"| node_flask_api
node_flask_api -->|"preprocesses query"| node_query_prep
node_query_prep -->|"tokenizes with"| node_tokenizer
node_query_prep -->|"reads length"| node_config
node_flask_api -->|"dispatches prediction"| node_hybrid_infer
node_hybrid_infer -->|"loads hybrid model"| node_saved_models
node_hybrid_infer -->|"predicts on padded input"| node_query_prep
node_flask_api -->|"returns verdict"| node_response
node_response -->|"sends JSON"| node_client
node_training_entry -->|"loads prepared data"| node_preprocessing
node_preprocessing -->|"reads CSV"| node_dataset
node_preprocessing -->|"saves tokenizer"| node_tokenizer
node_preprocessing -->|"writes max length"| node_config
node_preprocessing -->|"plots label distributions"| node_result_plots
node_training_entry -->|"builds CNN LSTM hybrid"| node_model_build
node_training_entry -->|"trains each model"| node_model_train
node_model_train -->|"saves trained models"| node_saved_models
node_training_entry -->|"evaluates predictions"| node_evaluation
node_training_entry -->|"plots comparisons and curves"| node_result_plots
node_evaluation -->|"returns prediction metrics"| node_result_plots

click node_flask_api "https://github.com/saqibsattar03/masterproject/blob/master/app.py"
click node_query_prep "https://github.com/saqibsattar03/masterproject/blob/master/app.py"
click node_hybrid_infer "https://github.com/saqibsattar03/masterproject/blob/master/app.py"
click node_response "https://github.com/saqibsattar03/masterproject/blob/master/app.py"
click node_training_entry "https://github.com/saqibsattar03/masterproject/blob/master/src/main.py"
click node_preprocessing "https://github.com/saqibsattar03/masterproject/blob/master/src/preprocessing.py"
click node_model_build "https://github.com/saqibsattar03/masterproject/blob/master/src/train_model.py"
click node_model_train "https://github.com/saqibsattar03/masterproject/blob/master/src/train_model.py"
click node_evaluation "https://github.com/saqibsattar03/masterproject/blob/master/src/results/visualizations.py"
click node_result_plots "https://github.com/saqibsattar03/masterproject/blob/master/src/results/visualizations.py"
click node_dataset "https://github.com/saqibsattar03/masterproject/blob/master/data/raw/sql_injection_dataset.csv"
click node_tokenizer "https://github.com/saqibsattar03/masterproject/blob/master/models/tokenizer.pkl"
click node_config "https://github.com/saqibsattar03/masterproject/blob/master/config.json"
click node_saved_models "https://github.com/saqibsattar03/masterproject/tree/master/models"

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_flask_api,node_query_prep,node_hybrid_infer,node_response,node_client toneBlue
class node_training_entry,node_preprocessing,node_model_build,node_model_train toneAmber
class node_evaluation,node_result_plots toneMint
class node_dataset,node_tokenizer,node_config,node_saved_models toneRose
```

## Components

### Live Detection

- [Detection API](https://github.com/saqibsattar03/masterproject/blob/master/app.py): `app.py`
- [Query Preprocessing](https://github.com/saqibsattar03/masterproject/blob/master/app.py): `app.py`
- [Hybrid Inference](https://github.com/saqibsattar03/masterproject/blob/master/app.py): `app.py`
- [Detection Result](https://github.com/saqibsattar03/masterproject/blob/master/app.py): `app.py`

### Model Training

- [Training Orchestrator](https://github.com/saqibsattar03/masterproject/blob/master/src/main.py): `src/main.py`
- [Dataset Preparation](https://github.com/saqibsattar03/masterproject/blob/master/src/preprocessing.py): `src/preprocessing.py`
- [Model Architectures](https://github.com/saqibsattar03/masterproject/blob/master/src/train_model.py): `src/train_model.py`
- [Model Training](https://github.com/saqibsattar03/masterproject/blob/master/src/train_model.py): `src/train_model.py`

### Evaluation

- [Metrics Evaluation](https://github.com/saqibsattar03/masterproject/blob/master/src/results/visualizations.py): `src/results/visualizations.py`
- [Result Visualizations](https://github.com/saqibsattar03/masterproject/blob/master/src/results/visualizations.py): `src/results/visualizations.py`

### Data and Artifacts

- [SQLi Dataset](https://github.com/saqibsattar03/masterproject/blob/master/data/raw/sql_injection_dataset.csv): `data/raw/sql_injection_dataset.csv`
- [Saved Tokenizer](https://github.com/saqibsattar03/masterproject/blob/master/models/tokenizer.pkl): `models/tokenizer.pkl`
- [Sequence Config](https://github.com/saqibsattar03/masterproject/blob/master/config.json): `config.json`
- [Trained Models](https://github.com/saqibsattar03/masterproject/tree/master/models): `models`

### Other components

- **API Client**

## Connections

- API Client → Detection API: POST query (evidence: `README.md`)
- Detection API → Query Preprocessing: preprocesses query (evidence: `app.py`)
- Query Preprocessing → Saved Tokenizer: tokenizes with (evidence: `app.py`)
- Query Preprocessing → Sequence Config: reads length (evidence: `app.py`)
- Detection API → Hybrid Inference: dispatches prediction (evidence: `app.py`)
- Hybrid Inference → Trained Models: loads hybrid model (evidence: `app.py`)
- Hybrid Inference → Query Preprocessing: predicts on padded input (evidence: `app.py`)
- Detection API → Detection Result: returns verdict (evidence: `app.py`)
- Detection Result → API Client: sends JSON (evidence: `app.py`)
- Training Orchestrator → Dataset Preparation: loads prepared data (evidence: `src/main.py`)
- Dataset Preparation → SQLi Dataset: reads CSV (evidence: `src/preprocessing.py`)
- Dataset Preparation → Saved Tokenizer: saves tokenizer (evidence: `src/preprocessing.py`)
- Dataset Preparation → Sequence Config: writes max length (evidence: `src/preprocessing.py`)
- Dataset Preparation → Result Visualizations: plots label distributions (evidence: `src/preprocessing.py`)
- Training Orchestrator → Model Architectures: builds CNN LSTM hybrid (evidence: `src/main.py`)
- Training Orchestrator → Model Training: trains each model (evidence: `src/main.py`)
- Model Training → Trained Models: saves trained models (evidence: `src/train_model.py`)
- Training Orchestrator → Metrics Evaluation: evaluates predictions (evidence: `src/main.py`)
- Training Orchestrator → Result Visualizations: plots comparisons and curves (evidence: `src/main.py`)
- Metrics Evaluation → Result Visualizations: returns prediction metrics (evidence: `src/results/visualizations.py`)
