# tkaturi7/student-registration architecture

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

## Overview

This repository combines a student-registration web app with a security-gated delivery pipeline. Applicants submit registration details and a resume; the server validates and stores the resume in Google Cloud Storage, then records the registration in MySQL. Separately, pushes to main trigger a workflow that builds and scans a candidate image, and only after the ZAP gate passes pushes it to Artifact Registry and deploys to GKE. The registration page and workflow internals are documented or present in the tree but not sampled, so their internal behavior is shown only at that level.

Main entry points: [`.github/workflows/deploy-gke.yaml`](https://github.com/tkaturi7/student-registration/blob/main/.github/workflows/deploy-gke.yaml) (GitHub Actions workflow), [`server.js`](https://github.com/tkaturi7/student-registration/blob/main/server.js) (Resume upload), [`public/index.html`](https://github.com/tkaturi7/student-registration/blob/main/public/index.html) (Registration page), [`k8s/deployment.yaml`](https://github.com/tkaturi7/student-registration/blob/main/k8s/deployment.yaml) (GKE deployment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_registration["Registration app"]
  node_registration_page["Registration page<br/>[index.html]"]
  node_server["Express server<br/>[server.js]"]
  node_resume_upload["Resume upload<br/>[server.js]"]
end

subgraph group_persistence["Registration storage"]
  node_mysql[("MySQL database")]
  node_gcs[("Google Cloud Storage")]
end

subgraph group_delivery["Secure delivery"]
  node_workflow["GitHub Actions workflow<br/>[deploy-gke.yaml]"]
  node_candidate_image["Candidate image"]
  node_zap["OWASP ZAP scan<br/>[deploy-gke.yaml]"]
  node_artifact_registry[("Artifact Registry")]
  node_gke["GKE deployment<br/>[deployment.yaml]"]
end

node_applicant(("Applicant"))
node_developer(("Developer"))

node_applicant -->|"opens"| node_registration_page
node_registration_page -->|"submits registration"| node_server
node_server -->|"handles registration"| node_resume_upload
node_resume_upload -->|"stores resume"| node_gcs
node_resume_upload -->|"records student"| node_mysql
node_developer -->|"pushes to main"| node_workflow
node_workflow -->|"builds image"| node_candidate_image
node_workflow -->|"starts candidate"| node_candidate_image
node_workflow -->|"runs scan"| node_zap
node_zap -->|"gates release"| node_workflow
node_workflow -->|"pushes on pass"| node_artifact_registry
node_workflow -->|"deploys on pass"| node_gke
node_gke -->|"uses image"| node_artifact_registry

click node_registration_page "https://github.com/tkaturi7/student-registration/blob/main/public/index.html"
click node_server "https://github.com/tkaturi7/student-registration/blob/main/server.js"
click node_resume_upload "https://github.com/tkaturi7/student-registration/blob/main/server.js"
click node_workflow "https://github.com/tkaturi7/student-registration/blob/main/.github/workflows/deploy-gke.yaml"
click node_candidate_image "https://github.com/tkaturi7/student-registration/blob/main/Dockerfile"
click node_zap "https://github.com/tkaturi7/student-registration/blob/main/.github/workflows/deploy-gke.yaml"
click node_gke "https://github.com/tkaturi7/student-registration/blob/main/k8s/deployment.yaml"

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_registration_page,node_server,node_resume_upload toneBlue
class node_mysql,node_gcs toneAmber
class node_workflow,node_candidate_image,node_zap,node_artifact_registry,node_gke toneMint
class node_applicant,node_developer toneIndigo
```

## Components

### Registration app

- [Registration page](https://github.com/tkaturi7/student-registration/blob/main/public/index.html): `public/index.html`
- [Express server](https://github.com/tkaturi7/student-registration/blob/main/server.js): `server.js`
- [Resume upload](https://github.com/tkaturi7/student-registration/blob/main/server.js): `server.js`

### Registration storage

- **MySQL database**
- **Google Cloud Storage**

### Secure delivery

- [GitHub Actions workflow](https://github.com/tkaturi7/student-registration/blob/main/.github/workflows/deploy-gke.yaml): `.github/workflows/deploy-gke.yaml`
- [Candidate image](https://github.com/tkaturi7/student-registration/blob/main/Dockerfile): `Dockerfile`
- [OWASP ZAP scan](https://github.com/tkaturi7/student-registration/blob/main/.github/workflows/deploy-gke.yaml): `.github/workflows/deploy-gke.yaml`
- **Artifact Registry**
- [GKE deployment](https://github.com/tkaturi7/student-registration/blob/main/k8s/deployment.yaml): `k8s/deployment.yaml`

### Other components

- **Applicant**
- **Developer**

## Connections

- Applicant → Registration page: opens
- Registration page → Express server: submits registration
- Express server → Resume upload: handles registration
- Resume upload → Google Cloud Storage: stores resume
- Resume upload → MySQL database: records student
- Developer → GitHub Actions workflow: pushes to main
- GitHub Actions workflow → Candidate image: builds image
- GitHub Actions workflow → Candidate image: starts candidate
- GitHub Actions workflow → OWASP ZAP scan: runs scan
- OWASP ZAP scan → GitHub Actions workflow: gates release
- GitHub Actions workflow → Artifact Registry: pushes on pass
- GitHub Actions workflow → GKE deployment: deploys on pass
- GKE deployment → Artifact Registry: uses image
