# nischal2211/cvd_risk_prediction_system architecture

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

- Interactive diagram: https://gitdiagram.com/nischal2211/cvd_risk_prediction_system
- Repository: https://github.com/nischal2211/cvd_risk_prediction_system

## Overview

This Flask application lets users create accounts, enter 12 health parameters, and receive a probability-based cardiovascular risk level, risk factors, and advice; signed-in users can review prior assessments. An admin view summarizes users and prediction trends. Model training is a separate workflow that reads the supplied dataset and produces artifacts loaded by the web app. The sampled code supports the main assessment, account, history, and part of the admin data flow; unsampled route details are represented only where README or tree evidence supports them.

Main entry points: [`app.py`](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py) (Flask application), [`model_training.py`](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/model_training.py) (Model training), [`database.db`](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/database.db) (SQLite database), [`cvd_model.pkl`](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/cvd_model.pkl) (Random Forest model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Flask application<br/>[app.py]"]
  node_accounts["Account management<br/>[app.py]"]
  node_assessment["Risk assessment<br/>[app.py]"]
  node_risk_logic["Risk scoring and advice<br/>[app.py]"]
  node_history_profile["History and profile<br/>[app.py]"]
  node_admin_analytics["Admin analytics<br/>[app.py]"]
end

subgraph group_data["Application data"]
  node_db[("SQLite database<br/>[database.db]")]
end

subgraph group_ml["Model lifecycle"]
  node_training["Model training<br/>[model_training.py]"]
  node_evaluation["Model evaluation"]
  node_dataset["Training dataset<br/>[cardio_train.csv]"]
  node_model["Random Forest model<br/>[cvd_model.pkl]"]
  node_scaler["Feature scaler<br/>[scaler.pkl]"]
  node_features["Feature list<br/>[features.pkl]"]
end

subgraph group_views["User interface"]
  node_views["HTML views"]
  node_styles["Stylesheet<br/>[style.css]"]
end

node_user(("User"))
node_admin(("Administrator"))

node_user -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"dispatches"| node_accounts
node_app -->|"dispatches"| node_assessment
node_app -->|"dispatches"| node_history_profile
node_app -->|"dispatches"| node_admin_analytics
node_accounts -->|"reads and writes"| node_db
node_history_profile -->|"reads and writes"| node_db
node_admin_analytics -->|"queries"| node_db
node_assessment -->|"transforms with"| node_scaler
node_assessment -->|"predicts with"| node_model
node_assessment -->|"uses"| node_features
node_assessment -->|"derives risk details"| node_risk_logic
node_assessment -->|"stores prediction"| node_db
node_app -->|"loads"| node_model
node_app -->|"loads"| node_scaler
node_app -->|"loads"| node_features
node_app -->|"renders"| node_views
node_views -->|"uses"| node_styles
node_training -->|"reads"| node_dataset
node_training -->|"writes"| node_model
node_training -->|"writes"| node_scaler
node_training -->|"writes"| node_features
node_evaluation -.->|"evaluates models on"| node_dataset

click node_app "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_accounts "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_assessment "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_risk_logic "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_history_profile "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_admin_analytics "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py"
click node_db "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/database.db"
click node_training "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/model_training.py"
click node_evaluation "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/model_evaluation.py"
click node_dataset "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/cardio_train.csv"
click node_model "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/cvd_model.pkl"
click node_scaler "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/scaler.pkl"
click node_features "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/features.pkl"
click node_views "https://github.com/nischal2211/cvd_risk_prediction_system/tree/main/templates"
click node_styles "https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/static/css/style.css"

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_accounts,node_assessment,node_risk_logic,node_history_profile,node_admin_analytics,node_user toneBlue
class node_db toneAmber
class node_training,node_evaluation,node_dataset,node_model,node_scaler,node_features toneMint
class node_views,node_styles toneRose
class node_admin toneIndigo
```

## Components

### Web application

- [Flask application](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`
- [Account management](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`
- [Risk assessment](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`
- [Risk scoring and advice](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`
- [History and profile](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`
- [Admin analytics](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/app.py): `app.py`

### Application data

- [SQLite database](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/database.db): `database.db`

### Model lifecycle

- [Model training](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/model_training.py): `model_training.py`
- [Model evaluation](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/model_evaluation.py): `model_evaluation.py`
- [Training dataset](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/cardio_train.csv): `cardio_train.csv`
- [Random Forest model](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/cvd_model.pkl): `cvd_model.pkl`
- [Feature scaler](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/scaler.pkl): `scaler.pkl`
- [Feature list](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/features.pkl): `features.pkl`

### User interface

- [HTML views](https://github.com/nischal2211/cvd_risk_prediction_system/tree/main/templates): `templates`
- [Stylesheet](https://github.com/nischal2211/cvd_risk_prediction_system/blob/main/static/css/style.css): `static/css/style.css`

### Other components

- **User**
- **Administrator**

## Connections

- User → Flask application: uses
- Administrator → Flask application: uses
- Flask application → Account management: dispatches
- Flask application → Risk assessment: dispatches
- Flask application → History and profile: dispatches
- Flask application → Admin analytics: dispatches
- Account management → SQLite database: reads and writes
- History and profile → SQLite database: reads and writes
- Admin analytics → SQLite database: queries
- Risk assessment → Feature scaler: transforms with
- Risk assessment → Random Forest model: predicts with
- Risk assessment → Feature list: uses
- Risk assessment → Risk scoring and advice: derives risk details
- Risk assessment → SQLite database: stores prediction
- Flask application → Random Forest model: loads
- Flask application → Feature scaler: loads
- Flask application → Feature list: loads
- Flask application → HTML views: renders
- HTML views → Stylesheet: uses
- Model training → Training dataset: reads
- Model training → Random Forest model: writes
- Model training → Feature scaler: writes
- Model training → Feature list: writes
- Model evaluation → Training dataset: evaluates models on
