# jerrinjoseph123/ctd_data_engineering architecture

> Architecture diagram of the GitHub repository jerrinjoseph123/ctd_data_engineering, 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/jerrinjoseph123/ctd_data_engineering
- Repository: https://github.com/jerrinjoseph123/ctd_data_engineering

## Overview

Country Explorer is a single-file interactive CLI that fetches country records from the Countries API, normalizes fields for its menus, and lets users filter, search, sort, identify extremes, and compare countries. The main loop coordinates API selection, loading, transformation, and entry into the country menu; menu actions are implemented in that same module. The README documents these capabilities, and the excerpt shows their call relationships. Open Library and Pokémon are explicitly unsupported options, not implemented integrations.

Main entry points: [`main.py`](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py) (Application loop)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("CLI user"))
node_main["Application loop<br/>[main.py]"]
node_api_menu["API selection<br/>[main.py]"]
node_fetch["API request<br/>[main.py]"]
node_countries_api["Countries API"]
node_transform["Data transformation<br/>[main.py]"]
node_country_menu["Country menu<br/>[main.py]"]
node_region_filter["Region filter<br/>[main.py]"]
node_country_search["Country search<br/>[main.py]"]
node_comparison["Country comparison<br/>[main.py]"]
node_display["Country display<br/>[main.py]"]

node_user -->|"uses"| node_main
node_main -->|"selects API"| node_api_menu
node_main -->|"requests data"| node_fetch
node_fetch -->|"HTTP GET"| node_countries_api
node_main -->|"normalizes records"| node_transform
node_main -->|"opens menu"| node_country_menu
node_country_menu -->|"filters region"| node_region_filter
node_country_menu -->|"searches name"| node_country_search
node_country_menu -->|"compares countries"| node_comparison
node_country_menu -->|"displays results"| node_display
node_region_filter -->|"prints matches"| node_display
node_country_search -->|"prints match"| node_display

click node_main "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_api_menu "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_fetch "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_transform "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_country_menu "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_region_filter "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_country_search "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_comparison "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py"
click node_display "https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.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_user toneBlue
class node_main,node_transform,node_country_menu,node_region_filter,node_country_search,node_comparison,node_display toneTeal
class node_api_menu,node_fetch,node_countries_api toneMint
```

## Components

### Other components

- **CLI user**
- [Application loop](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [API selection](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [API request](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- **Countries API**
- [Data transformation](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [Country menu](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [Region filter](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [Country search](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [Country comparison](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`
- [Country display](https://github.com/jerrinjoseph123/ctd_data_engineering/blob/main/main.py): `main.py`

## Connections

- CLI user → Application loop: uses (evidence: `README.md`)
- Application loop → API selection: selects API (evidence: `main.py`)
- Application loop → API request: requests data (evidence: `main.py`)
- API request → Countries API: HTTP GET (evidence: `main.py`)
- Application loop → Data transformation: normalizes records (evidence: `main.py`)
- Application loop → Country menu: opens menu (evidence: `main.py`)
- Country menu → Region filter: filters region (evidence: `main.py`)
- Country menu → Country search: searches name (evidence: `main.py`)
- Country menu → Country comparison: compares countries (evidence: `main.py`)
- Country menu → Country display: displays results (evidence: `main.py`)
- Region filter → Country display: prints matches (evidence: `main.py`)
- Country search → Country display: prints match (evidence: `main.py`)
