# polgrd/qcm_app_google_gen_ai_leader architecture

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

- Interactive diagram: https://gitdiagram.com/polgrd/qcm_app_google_gen_ai_leader
- Repository: https://github.com/polgrd/qcm_app_google_gen_ai_leader

## Overview

This is a client-side, offline-capable mock exam for the Google Cloud Generative AI Leader certification. The user starts or resumes a 60-question session, answers questions one at a time, receives explanations and source links, then reviews scores by domain, weak concepts, and missed questions. The app also saves in-progress sessions and exam history in browser storage. The graph focuses on runtime behavior; the README documents the development and standalone entry points. Some internal screen and scoring details are grouped because they share src/app.js.

Main entry points: [`src/app.js`](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js) (Exam application), [`src/questions.js`](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/questions.js) (Question bank)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_exam["Exam experience"]
  node_exam_app["Exam application<br/>[app.js]"]
  node_question_flow["Question flow<br/>[app.js]"]
  node_feedback["Answer feedback<br/>[app.js]"]
  node_results["Results review<br/>[app.js]"]
end

subgraph group_content["Exam content"]
  node_question_bank["Question bank<br/>[questions.js]"]
end

subgraph group_state["Session state"]
  node_session_state["Session state<br/>[app.js]"]
  node_browser_storage[("Browser storage")]
end

node_candidate(("Candidate"))

node_candidate -->|"uses"| node_exam_app
node_exam_app -->|"requires data"| node_question_bank
node_exam_app -->|"shows questions"| node_question_flow
node_question_flow -->|"reveals after answer"| node_feedback
node_exam_app -->|"shows at end"| node_results
node_exam_app -->|"maintains"| node_session_state
node_session_state -->|"persists"| node_browser_storage

click node_exam_app "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js"
click node_question_flow "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js"
click node_feedback "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js"
click node_results "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js"
click node_question_bank "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/questions.js"
click node_session_state "https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js"

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_exam_app,node_question_flow,node_feedback,node_results toneBlue
class node_question_bank toneAmber
class node_session_state,node_browser_storage toneMint
class node_candidate toneIndigo
```

## Components

### Exam experience

- [Exam application](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js): `src/app.js`
- [Question flow](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js): `src/app.js`
- [Answer feedback](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js): `src/app.js`
- [Results review](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js): `src/app.js`

### Exam content

- [Question bank](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/questions.js): `src/questions.js`

### Session state

- [Session state](https://github.com/polgrd/qcm_app_google_gen_ai_leader/blob/claude/google-genai-leader-exam-f31t4b/src/app.js): `src/app.js`
- **Browser storage**

### Other components

- **Candidate**

## Connections

- Candidate → Exam application: uses (evidence: `README.md`)
- Exam application → Question bank: requires data (evidence: `src/app.js`)
- Exam application → Question flow: shows questions (evidence: `src/app.js`)
- Question flow → Answer feedback: reveals after answer (evidence: `README.md`)
- Exam application → Results review: shows at end (evidence: `README.md`)
- Exam application → Session state: maintains (evidence: `src/app.js`)
- Session state → Browser storage: persists (evidence: `README.md`)
