# gerald-izuchukwu/helix-mini-projects architecture

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

- Interactive diagram: https://gitdiagram.com/gerald-izuchukwu/helix-mini-projects
- Repository: https://github.com/gerald-izuchukwu/helix-mini-projects

## Overview

This repository is a portfolio of independent infrastructure and application labs, not one integrated product. Its clearest user-facing workflow is the Flask guestbook: visitors view messages, submit a message, and the app stores it in Redis. Other branches cover AWS provisioning and IAM, Ansible configuration, containerized apps, Kubernetes deployment and storage, and monitoring. The guestbook source was sampled; other links are limited to relationships indicated by the tree and artifact names, so no cross-project pipeline is implied.

Main entry points: [`Python-Guest-Book-App/app.py`](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Python-Guest-Book-App/app.py) (Guestbook routes), [`Ansible-Web-Server/roles/apache/tasks/main.yml`](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/roles/apache/tasks/main.yml) (Apache role tasks), [`Nginx-Static-Website-Hosting/configs/nginx.conf`](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Nginx-Static-Website-Hosting/configs/nginx.conf) (Nginx config), [`Ansible-Web-Server/site.yml`](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/site.yml) (Ansible playbook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_apps["Applications"]
  node_guestbook["Guestbook routes<br/>[app.py]"]
  node_redis[("Redis messages")]
  node_portfolio["Portfolio site<br/>[index.html]"]
  node_nginx_site["Static site"]
  node_nginx_config["Nginx config<br/>[nginx.conf]"]
end

subgraph group_cloud["Cloud Infrastructure"]
  node_aws_iam["IAM guidance<br/>[README.md]"]
  node_terraform["Terraform resources<br/>[main.tf]"]
  node_ec2["EC2 lab<br/>[README.md]"]
end

subgraph group_automation["Configuration Automation"]
  node_ansible_site["Ansible playbook<br/>[site.yml]"]
  node_apache_tasks["Apache role tasks<br/>[main.yml]"]
  node_apache_template["Web page template<br/>[index.html.j2]"]
end

subgraph group_kubernetes["Kubernetes"]
  node_kube_deployment["Pod deployment<br/>[deployment.yaml]"]
  node_frontend_deploy["Frontend deployment"]
  node_frontend_service["Frontend service"]
  node_backend_deploy["Backend deployment"]
  node_backend_service["Backend service"]
  node_configmap["ConfigMap<br/>[configmap.yaml]"]
  node_secret["Secret<br/>[secret.yaml]"]
  node_storage_pv["Persistent volume<br/>[pv.yaml]"]
  node_storage_pvc["Volume claim<br/>[pvc.yaml]"]
end

subgraph group_monitoring["Monitoring"]
  node_prometheus_config["Prometheus config<br/>[prometheus.yml]"]
  node_monitor_deploy["Monitoring deployment<br/>[deployment.yaml]"]
  node_monitor_service["Monitoring service<br/>[service.yaml]"]
  node_grafana_dashboard["Grafana dashboard"]
end

node_visitor(("Visitor"))
node_k8s_runtime{{"Kubernetes cluster"}}
node_prometheus{{"Prometheus"}}

node_visitor -->|"requests pages"| node_guestbook
node_guestbook -->|"reads messages"| node_redis
node_guestbook -->|"stores message"| node_redis
node_visitor -->|"views site"| node_portfolio
node_nginx_config -->|"serves content"| node_nginx_site
node_ansible_site -->|"runs role"| node_apache_tasks
node_apache_tasks -->|"uses template"| node_apache_template
node_frontend_deploy -->|"applies workload"| node_k8s_runtime
node_frontend_service -->|"exposes frontend"| node_k8s_runtime
node_backend_deploy -->|"applies workload"| node_k8s_runtime
node_backend_service -->|"exposes backend"| node_k8s_runtime
node_kube_deployment -->|"applies workload"| node_k8s_runtime
node_configmap -->|"provides configuration"| node_k8s_runtime
node_secret -->|"provides secret"| node_k8s_runtime
node_storage_pv -->|"defines storage"| node_k8s_runtime
node_storage_pvc -->|"claims storage"| node_k8s_runtime
node_monitor_deploy -->|"applies workload"| node_k8s_runtime
node_monitor_service -->|"exposes service"| node_k8s_runtime
node_prometheus_config -->|"configures scraping"| node_prometheus
node_prometheus -.->|"feeds dashboard"| node_grafana_dashboard

click node_guestbook "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Python-Guest-Book-App/app.py"
click node_portfolio "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Dockerized-Portfolio/index.html"
click node_nginx_site "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Nginx-Static-Website-Hosting/html/myfirstwebsite.html"
click node_nginx_config "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Nginx-Static-Website-Hosting/configs/nginx.conf"
click node_aws_iam "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/AWS-IAM-Mangement/README.md"
click node_terraform "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Helix-Terraform/main.tf"
click node_ec2 "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/EC2-provisioning-labs/README.md"
click node_ansible_site "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/site.yml"
click node_apache_tasks "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/roles/apache/tasks/main.yml"
click node_apache_template "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/roles/apache/templates/index.html.j2"
click node_kube_deployment "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Kubernetes-Pod-Deployment/manifests/deployment.yaml"
click node_frontend_deploy "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/frontend-deployment.yaml"
click node_frontend_service "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/frontend-service.yaml"
click node_backend_deploy "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/backend-deployment.yaml"
click node_backend_service "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/backend-service.yaml"
click node_configmap "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-configmaps-secrets/configmap.yaml"
click node_secret "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-configmaps-secrets/secret.yaml"
click node_storage_pv "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-storage-assignment/03-persistent-volume/pv.yaml"
click node_storage_pvc "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-storage-assignment/03-persistent-volume/pvc.yaml"
click node_prometheus_config "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/prometheus-monitoring-assignment/prometheus.yml"
click node_monitor_deploy "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/k8s/deployment.yaml"
click node_monitor_service "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/k8s/service.yaml"
click node_grafana_dashboard "https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/screenshots/grafana/Kubernetes%20Workload%20Monitoring-1790069883669.json"

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_guestbook,node_redis,node_portfolio,node_nginx_site,node_nginx_config toneBlue
class node_aws_iam,node_terraform,node_ec2 toneAmber
class node_ansible_site,node_apache_tasks,node_apache_template toneMint
class node_kube_deployment,node_frontend_deploy,node_frontend_service,node_backend_deploy,node_backend_service,node_configmap,node_secret,node_storage_pv,node_storage_pvc toneRose
class node_prometheus_config,node_monitor_deploy,node_monitor_service,node_grafana_dashboard,node_visitor,node_k8s_runtime,node_prometheus toneIndigo
```

## Components

### Applications

- [Guestbook routes](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Python-Guest-Book-App/app.py): `Python-Guest-Book-App/app.py`
- **Redis messages**
- [Portfolio site](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Dockerized-Portfolio/index.html): `Dockerized-Portfolio/index.html`
- [Static site](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Nginx-Static-Website-Hosting/html/myfirstwebsite.html): `Nginx-Static-Website-Hosting/html/myfirstwebsite.html`
- [Nginx config](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Nginx-Static-Website-Hosting/configs/nginx.conf): `Nginx-Static-Website-Hosting/configs/nginx.conf`

### Cloud Infrastructure

- [IAM guidance](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/AWS-IAM-Mangement/README.md): `AWS-IAM-Mangement/README.md`
- [Terraform resources](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Helix-Terraform/main.tf): `Helix-Terraform/main.tf`
- [EC2 lab](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/EC2-provisioning-labs/README.md): `EC2-provisioning-labs/README.md`

### Configuration Automation

- [Ansible playbook](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/site.yml): `Ansible-Web-Server/site.yml`
- [Apache role tasks](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/roles/apache/tasks/main.yml): `Ansible-Web-Server/roles/apache/tasks/main.yml`
- [Web page template](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Ansible-Web-Server/roles/apache/templates/index.html.j2): `Ansible-Web-Server/roles/apache/templates/index.html.j2`

### Kubernetes

- [Pod deployment](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/Kubernetes-Pod-Deployment/manifests/deployment.yaml): `Kubernetes-Pod-Deployment/manifests/deployment.yaml`
- [Frontend deployment](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/frontend-deployment.yaml): `kubernetes-services-minikube/manifests/frontend-deployment.yaml`
- [Frontend service](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/frontend-service.yaml): `kubernetes-services-minikube/manifests/frontend-service.yaml`
- [Backend deployment](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/backend-deployment.yaml): `kubernetes-services-minikube/manifests/backend-deployment.yaml`
- [Backend service](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-services-minikube/manifests/backend-service.yaml): `kubernetes-services-minikube/manifests/backend-service.yaml`
- [ConfigMap](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-configmaps-secrets/configmap.yaml): `kubernetes-configmaps-secrets/configmap.yaml`
- [Secret](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-configmaps-secrets/secret.yaml): `kubernetes-configmaps-secrets/secret.yaml`
- [Persistent volume](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-storage-assignment/03-persistent-volume/pv.yaml): `kubernetes-storage-assignment/03-persistent-volume/pv.yaml`
- [Volume claim](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/kubernetes-storage-assignment/03-persistent-volume/pvc.yaml): `kubernetes-storage-assignment/03-persistent-volume/pvc.yaml`

### Monitoring

- [Prometheus config](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/prometheus-monitoring-assignment/prometheus.yml): `prometheus-monitoring-assignment/prometheus.yml`
- [Monitoring deployment](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/k8s/deployment.yaml): `container-k8s-monitoring/k8s/deployment.yaml`
- [Monitoring service](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/k8s/service.yaml): `container-k8s-monitoring/k8s/service.yaml`
- [Grafana dashboard](https://github.com/gerald-izuchukwu/helix-mini-projects/blob/main/container-k8s-monitoring/screenshots/grafana/Kubernetes%20Workload%20Monitoring-1790069883669.json): `container-k8s-monitoring/screenshots/grafana/Kubernetes Workload Monitoring-1790069883669.json`

### Other components

- **Visitor**
- **Kubernetes cluster**
- **Prometheus**

## Connections

- Visitor → Guestbook routes: requests pages
- Guestbook routes → Redis messages: reads messages
- Guestbook routes → Redis messages: stores message
- Visitor → Portfolio site: views site
- Nginx config → Static site: serves content
- Ansible playbook → Apache role tasks: runs role
- Apache role tasks → Web page template: uses template
- Frontend deployment → Kubernetes cluster: applies workload
- Frontend service → Kubernetes cluster: exposes frontend
- Backend deployment → Kubernetes cluster: applies workload
- Backend service → Kubernetes cluster: exposes backend
- Pod deployment → Kubernetes cluster: applies workload
- ConfigMap → Kubernetes cluster: provides configuration
- Secret → Kubernetes cluster: provides secret
- Persistent volume → Kubernetes cluster: defines storage
- Volume claim → Kubernetes cluster: claims storage
- Monitoring deployment → Kubernetes cluster: applies workload
- Monitoring service → Kubernetes cluster: exposes service
- Prometheus config → Prometheus: configures scraping
- Prometheus → Grafana dashboard: feeds dashboard
