# jth6-rice/granted architecture

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

- Interactive diagram: https://gitdiagram.com/jth6-rice/granted
- Repository: https://github.com/jth6-rice/granted

## Overview

This repository contains two operational products: a HERD survey-data ingestion pipeline and Turnkey, a PHP NSF project-site/CMS. HERD downloads and processes expenditure, funding, ranking and related survey tables into MariaDB; the sampled entry point confirms table-specific processing and SQL writes, but not every stage’s implementation. Turnkey installs/configures its site, authenticates users, and serves public pages while administrators manage users, pages and configuration. The graph follows visible calls and documented/source-index references; unsampled Turnkey capabilities are grouped where the tree supports them, without inferred call chains.

Main entry points: [`turnkey/includes/nsfproject/helper/dbModel.php`](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/dbModel.php) (Database Access), [`turnkey/includes/nsfproject/helper/helper.php`](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/helper.php) (Site Helpers), [`turnkey/html/nsfproject/manage/index.php`](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/manage/index.php) (Admin Console), [`turnkey/html/nsfproject/login.php`](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/login.php) (Login And Reset)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_herd["HERD Data Ingestion"]
  node_herd_pipeline["HERD Processor"]
  node_herd_helpers["HERD Helpers<br/>[HERD_functions.py]"]
  node_maria[("MariaDB")]
end

subgraph group_setup["Turnkey Installation"]
  node_installer["Site Installer<br/>[setup3.php]"]
  node_setup_forms["Setup Forms<br/>[setupForm.php]"]
  node_config_controller["Settings Controller"]
  node_config_files["Site Configuration"]
end

subgraph group_site["Turnkey Site And Admin"]
  node_login["Login And Reset<br/>[login.php]"]
  node_public_site["Public Pages<br/>[index.php]"]
  node_admin["Admin Console<br/>[index.php]"]
  node_page_model["Page Management<br/>[pages.php]"]
  node_user_model["User Management<br/>[user.php]"]
  node_navigation["Navigation<br/>[navigation.php]"]
  node_content_views["Content Views"]
  node_logout["Logout<br/>[logout.php]"]
  node_password_pages["Password Pages<br/>[updatePassword.php]"]
end

subgraph group_infra["Shared Turnkey Services"]
  node_db_model["Database Access<br/>[dbModel.php]"]
  node_turnkey_db[("Turnkey Database")]
  node_helper["Site Helpers<br/>[helper.php]"]
  node_logger["Message Logger<br/>[logger.php]"]
end

node_data_user(("Data Operator"))
node_visitor(("Site Visitor"))

node_data_user -->|"runs"| node_herd_pipeline
node_herd_pipeline -->|"uses"| node_herd_helpers
node_herd_pipeline -->|"writes records"| node_maria
node_herd_helpers -->|"updates lookups"| node_maria
node_installer -->|"builds forms"| node_setup_forms
node_installer -->|"writes settings"| node_config_files
node_config_controller -->|"logs errors"| node_logger
node_visitor -->|"submits credentials"| node_login
node_login -->|"validates user"| node_user_model
node_login -->|"gets database"| node_db_model
node_login -->|"renders footer"| node_helper
node_visitor -->|"requests pages"| node_public_site
node_public_site -->|"fetches pages"| node_page_model
node_public_site -->|"gets database"| node_db_model
node_public_site -->|"uses helpers"| node_helper
node_admin -->|"manages pages"| node_page_model
node_admin -->|"manages users"| node_user_model
node_admin -->|"handles settings"| node_config_controller
node_admin -->|"gets database"| node_db_model
node_admin -->|"renders forms"| node_helper
node_helper -->|"builds navigation"| node_navigation
node_helper -->|"fetches page"| node_page_model
node_helper -->|"renders views"| node_content_views
node_page_model -->|"queries database"| node_db_model
node_user_model -->|"queries database"| node_db_model
node_navigation -->|"uses database"| node_db_model
node_db_model -->|"connects"| node_turnkey_db
node_logout -->|"ends session"| node_visitor
node_password_pages -.->|"updates password"| node_user_model

click node_herd_pipeline "https://github.com/jth6-rice/granted/blob/main/HERD_download_maria_aws.py"
click node_herd_helpers "https://github.com/jth6-rice/granted/blob/main/granted/HERD_functions.py"
click node_installer "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/setup3.php"
click node_setup_forms "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/setupForm.php"
click node_config_controller "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/controllers/NSFsettingsController.php"
click node_config_files "https://github.com/jth6-rice/granted/tree/main/turnkey/includes/nsfproject/conf"
click node_login "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/login.php"
click node_public_site "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/index.php"
click node_admin "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/manage/index.php"
click node_page_model "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/pages.php"
click node_user_model "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/user.php"
click node_navigation "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/navigation.php"
click node_content_views "https://github.com/jth6-rice/granted/tree/main/turnkey/includes/nsfproject/helper/views"
click node_db_model "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/dbModel.php"
click node_helper "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/helper.php"
click node_logger "https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/logger.php"
click node_logout "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/logout.php"
click node_password_pages "https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/updatePassword.php"

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_herd_pipeline,node_herd_helpers,node_maria toneBlue
class node_installer,node_setup_forms,node_config_controller,node_config_files toneAmber
class node_login,node_public_site,node_admin,node_page_model,node_user_model,node_navigation,node_content_views,node_logout,node_password_pages toneMint
class node_db_model,node_turnkey_db,node_helper,node_logger toneRose
class node_data_user,node_visitor toneIndigo
```

## Components

### HERD Data Ingestion

- [HERD Processor](https://github.com/jth6-rice/granted/blob/main/HERD_download_maria_aws.py): `HERD_download_maria_aws.py`
- [HERD Helpers](https://github.com/jth6-rice/granted/blob/main/granted/HERD_functions.py): `granted/HERD_functions.py`
- **MariaDB**

### Turnkey Installation

- [Site Installer](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/setup3.php): `turnkey/html/nsfproject/setup3.php`
- [Setup Forms](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/setupForm.php): `turnkey/includes/nsfproject/helper/setupForm.php`
- [Settings Controller](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/controllers/NSFsettingsController.php): `turnkey/includes/nsfproject/controllers/NSFsettingsController.php`
- [Site Configuration](https://github.com/jth6-rice/granted/tree/main/turnkey/includes/nsfproject/conf): `turnkey/includes/nsfproject/conf`

### Turnkey Site And Admin

- [Login And Reset](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/login.php): `turnkey/html/nsfproject/login.php`
- [Public Pages](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/index.php): `turnkey/html/nsfproject/index.php`
- [Admin Console](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/manage/index.php): `turnkey/html/nsfproject/manage/index.php`
- [Page Management](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/pages.php): `turnkey/includes/nsfproject/models/pages.php`
- [User Management](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/user.php): `turnkey/includes/nsfproject/models/user.php`
- [Navigation](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/models/navigation.php): `turnkey/includes/nsfproject/models/navigation.php`
- [Content Views](https://github.com/jth6-rice/granted/tree/main/turnkey/includes/nsfproject/helper/views): `turnkey/includes/nsfproject/helper/views`
- [Logout](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/logout.php): `turnkey/html/nsfproject/logout.php`
- [Password Pages](https://github.com/jth6-rice/granted/blob/main/turnkey/html/nsfproject/updatePassword.php): `turnkey/html/nsfproject/updatePassword.php`

### Shared Turnkey Services

- [Database Access](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/dbModel.php): `turnkey/includes/nsfproject/helper/dbModel.php`
- **Turnkey Database**
- [Site Helpers](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/helper.php): `turnkey/includes/nsfproject/helper/helper.php`
- [Message Logger](https://github.com/jth6-rice/granted/blob/main/turnkey/includes/nsfproject/helper/logger.php): `turnkey/includes/nsfproject/helper/logger.php`

### Other components

- **Data Operator**
- **Site Visitor**

## Connections

- Data Operator → HERD Processor: runs
- HERD Processor → HERD Helpers: uses (evidence: `HERD_download_maria_aws.py`)
- HERD Processor → MariaDB: writes records (evidence: `HERD_download_maria_aws.py`)
- HERD Helpers → MariaDB: updates lookups (evidence: `granted/HERD_functions.py`)
- Site Installer → Setup Forms: builds forms (evidence: `turnkey/html/nsfproject/setup3.php`)
- Site Installer → Site Configuration: writes settings (evidence: `turnkey/html/nsfproject/setup3.php`)
- Settings Controller → Message Logger: logs errors (evidence: `turnkey/includes/nsfproject/controllers/NSFsettingsController.php`)
- Site Visitor → Login And Reset: submits credentials (evidence: `turnkey/html/nsfproject/login.php`)
- Login And Reset → User Management: validates user (evidence: `turnkey/html/nsfproject/login.php`)
- Login And Reset → Database Access: gets database (evidence: `turnkey/html/nsfproject/login.php`)
- Login And Reset → Site Helpers: renders footer (evidence: `turnkey/html/nsfproject/login.php`)
- Site Visitor → Public Pages: requests pages
- Public Pages → Page Management: fetches pages (evidence: `turnkey/html/nsfproject/index.php`)
- Public Pages → Database Access: gets database (evidence: `turnkey/html/nsfproject/index.php`)
- Public Pages → Site Helpers: uses helpers (evidence: `turnkey/html/nsfproject/index.php`)
- Admin Console → Page Management: manages pages (evidence: `turnkey/html/nsfproject/manage/index.php`)
- Admin Console → User Management: manages users (evidence: `turnkey/html/nsfproject/manage/index.php`)
- Admin Console → Settings Controller: handles settings (evidence: `turnkey/html/nsfproject/manage/index.php`)
- Admin Console → Database Access: gets database (evidence: `turnkey/html/nsfproject/manage/index.php`)
- Admin Console → Site Helpers: renders forms (evidence: `turnkey/html/nsfproject/manage/index.php`)
- Site Helpers → Navigation: builds navigation (evidence: `turnkey/includes/nsfproject/helper/helper.php`)
- Site Helpers → Page Management: fetches page (evidence: `turnkey/includes/nsfproject/helper/helper.php`)
- Site Helpers → Content Views: renders views (evidence: `turnkey/includes/nsfproject/helper/helper.php`)
- Page Management → Database Access: queries database (evidence: `turnkey/includes/nsfproject/models/pages.php`)
- User Management → Database Access: queries database (evidence: `turnkey/includes/nsfproject/models/user.php`)
- Navigation → Database Access: uses database (evidence: `turnkey/includes/nsfproject/models/navigation.php`)
- Database Access → Turnkey Database: connects (evidence: `turnkey/includes/nsfproject/helper/dbModel.php`)
- Logout → Site Visitor: ends session (evidence: `turnkey/html/nsfproject/logout.php`)
- Password Pages → User Management: updates password
