# architect-z-coder/pmp-certifizer architecture

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

- Interactive diagram: https://gitdiagram.com/architect-z-coder/pmp-certifizer
- Repository: https://github.com/architect-z-coder/pmp-certifizer

## Overview

Certifizer is an adaptive PMP study app: learners explain concepts, relate them to projects, or answer curated quizzes and exam scenarios; the backend grades activity, records attempts and mastery, and recommends a next study area. Trainers also manage cohorts, targeted sessions, invitations, and question content. The graph follows documented API and sampled call relationships; backend details not shown in excerpts are represented only where the README or tree supports them.

Main entry points: [`backend/app/main.py`](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/main.py) (FastAPI routes), [`frontend/src/api.js`](https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/api.js) (API client), [`backend/app/models.py`](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/models.py) (Attempt and mastery data), [`frontend/src/App.jsx`](https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/App.jsx) (Study app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learner study"]
  node_app["Study app<br/>[App.jsx]"]
  node_trainer_ui["Trainer cockpit"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_backend["Learning backend"]
  node_api["FastAPI routes<br/>[main.py]"]
  node_question_bank["Curated questions"]
  node_eco["ECO mapping<br/>[eco.py]"]
  node_mastery["Mastery engine<br/>[mastery.py]"]
  node_prompts["Advisor prompts<br/>[prompts.py]"]
  node_llm_client["LLM client<br/>[llm.py]"]
end

subgraph group_trainer["Trainer tools"]
  node_saas["Cohort services<br/>[saas.py]"]
  node_email["Email service<br/>[email_service.py]"]
end

subgraph group_state["Learning state"]
  node_models[("Attempt and mastery data<br/>[models.py]")]
end

subgraph group_integrations["External services"]
  node_llm_provider["LLM provider"]
  node_sql_store[("SQL database")]
  node_brevo["Brevo"]
end

node_learner(("Learner"))
node_trainer_user(("Trainer"))

node_learner -->|"uses"| node_app
node_app -->|"requests"| node_api_client
node_api_client -->|"calls API"| node_api
node_api -->|"builds prompts"| node_prompts
node_api -->|"requests completion"| node_llm_client
node_llm_client -->|"sends prompt"| node_llm_provider
node_api -->|"records and recommends"| node_mastery
node_api -->|"reads and writes"| node_models
node_api -->|"loads questions"| node_question_bank
node_api -->|"maps ECO tasks"| node_eco
node_trainer_user -->|"uses"| node_trainer_ui
node_trainer_ui -->|"requests"| node_api_client
node_api -->|"handles cohort operations"| node_saas
node_saas -->|"reads and writes"| node_models
node_models -->|"persists data"| node_sql_store
node_email -.->|"sends email"| node_brevo

click node_app "https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/App.jsx"
click node_trainer_ui "https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/CockpitFormateur.jsx"
click node_api_client "https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/api.js"
click node_api "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/main.py"
click node_question_bank "https://github.com/architect-z-coder/pmp-certifizer/tree/main/backend/app/data"
click node_eco "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/eco.py"
click node_mastery "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/mastery.py"
click node_prompts "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/prompts.py"
click node_llm_client "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/llm.py"
click node_saas "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/saas.py"
click node_email "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/email_service.py"
click node_models "https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/models.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_app,node_trainer_ui,node_api_client toneBlue
class node_api,node_question_bank,node_eco,node_mastery,node_prompts,node_llm_client toneAmber
class node_saas,node_email toneMint
class node_models toneRose
class node_llm_provider,node_sql_store,node_brevo,node_learner,node_trainer_user toneIndigo
```

## Components

### Learner study

- [Study app](https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Trainer cockpit](https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/CockpitFormateur.jsx): `frontend/src/CockpitFormateur.jsx`
- [API client](https://github.com/architect-z-coder/pmp-certifizer/blob/main/frontend/src/api.js): `frontend/src/api.js`

### Learning backend

- [FastAPI routes](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/main.py): `backend/app/main.py`
- [Curated questions](https://github.com/architect-z-coder/pmp-certifizer/tree/main/backend/app/data): `backend/app/data`
- [ECO mapping](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/eco.py): `backend/app/eco.py`
- [Mastery engine](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/mastery.py): `backend/app/mastery.py`
- [Advisor prompts](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/prompts.py): `backend/app/prompts.py`
- [LLM client](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/llm.py): `backend/app/llm.py`

### Trainer tools

- [Cohort services](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/saas.py): `backend/app/saas.py`
- [Email service](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/email_service.py): `backend/app/email_service.py`

### Learning state

- [Attempt and mastery data](https://github.com/architect-z-coder/pmp-certifizer/blob/main/backend/app/models.py): `backend/app/models.py`

### External services

- **LLM provider**
- **SQL database**
- **Brevo**

### Other components

- **Learner**
- **Trainer**

## Connections

- Learner → Study app: uses
- Study app → API client: requests
- API client → FastAPI routes: calls API
- FastAPI routes → Advisor prompts: builds prompts
- FastAPI routes → LLM client: requests completion
- LLM client → LLM provider: sends prompt
- FastAPI routes → Mastery engine: records and recommends
- FastAPI routes → Attempt and mastery data: reads and writes
- FastAPI routes → Curated questions: loads questions
- FastAPI routes → ECO mapping: maps ECO tasks
- Trainer → Trainer cockpit: uses
- Trainer cockpit → API client: requests
- FastAPI routes → Cohort services: handles cohort operations
- Cohort services → Attempt and mastery data: reads and writes
- Attempt and mastery data → SQL database: persists data
- Email service → Brevo: sends email
