# agatapouglof/quizz-system architecture

> Architecture diagram of the GitHub repository agatapouglof/quizz-system, 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/agatapouglof/quizz-system
- Repository: https://github.com/agatapouglof/quizz-system

## Overview

This repository combines a React quiz experience with a NestJS API for authentication and quiz-related resources. The visible client routing leads users from the home screen to the quiz screen; API controllers expose account, question, option, category, notification, and statistics operations. Sampled controller code confirms service calls for those operations, while many service/DAO implementations and client component internals were not provided, so their deeper wiring is not inferred.

Main entry points: [`quiz-tech-api/src/auth/auth.service.ts`](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/auth.service.ts) (Auth workflows), [`Quiz-Tech-App/src/main.jsx`](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/main.jsx) (Client router), [`quiz-tech-api/src/category/category.controller.ts`](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/category/category.controller.ts) (Category endpoints), [`quiz-tech-api/src/notification/notification.controller.ts`](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/notification/notification.controller.ts) (Notification endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Quiz client"]
  node_client_entry["Client router<br/>[main.jsx]"]
  node_home["Home screen<br/>[Home.jsx]"]
  node_quiz_ui["Quiz screen<br/>[Quiz.jsx]"]
  node_answer_ui["Answer control<br/>[Answer.jsx]"]
  node_quiz_store["Quiz state<br/>[quizStore.js]"]
  node_quiz_data["Quiz content<br/>[data.js]"]
end

subgraph group_identity["Identity"]
  node_auth_controller["Auth endpoints<br/>[auth.controller.ts]"]
  node_auth_service["Auth workflows<br/>[auth.service.ts]"]
  node_user_service["User operations<br/>[user.service.ts]"]
  node_token_service["Confirmation tokens"]
end

subgraph group_quizapi["Quiz resources"]
  node_question_controller["Question endpoints"]
  node_question_service["Question operations"]
  node_question_dao["Question persistence<br/>[question.dao.ts]"]
  node_option_controller["Option endpoints"]
  node_option_service["Option operations"]
  node_category_controller["Category endpoints"]
  node_category_service["Category operations"]
end

subgraph group_support["Other API resources"]
  node_notification_controller["Notification endpoints"]
  node_notification_service["Notification operations"]
  node_statistics_controller["Statistics endpoints"]
  node_statistics_service["Statistics operations"]
end

node_visitor(("Quiz user"))
node_api_entry["API bootstrap<br/>[main.ts]"]
node_mongo[("MongoDB")]

node_visitor -->|"opens"| node_client_entry
node_client_entry -->|"routes to"| node_home
node_client_entry -->|"routes to"| node_quiz_ui
node_visitor -->|"requests auth"| node_auth_controller
node_visitor -->|"requests questions"| node_question_controller
node_visitor -->|"requests options"| node_option_controller
node_visitor -->|"requests categories"| node_category_controller
node_visitor -->|"requests notifications"| node_notification_controller
node_visitor -.->|"requests statistics"| node_statistics_controller
node_api_entry -->|"connects"| node_mongo
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"calls"| node_user_service
node_auth_service -->|"calls"| node_token_service
node_question_controller -->|"calls"| node_question_service
node_question_service -.-> node_question_dao
node_option_controller -->|"calls"| node_option_service
node_category_controller -->|"calls"| node_category_service
node_category_controller -->|"resolves user"| node_auth_service
node_notification_controller -->|"resolves user"| node_auth_service
node_notification_controller -->|"calls"| node_notification_service
node_statistics_controller -->|"calls"| node_statistics_service

click node_client_entry "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/main.jsx"
click node_home "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Home/Home.jsx"
click node_quiz_ui "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Quiz/Quiz.jsx"
click node_answer_ui "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Quiz/Answer/Answer.jsx"
click node_quiz_store "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/store/quizStore.js"
click node_quiz_data "https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/data.js"
click node_api_entry "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/main.ts"
click node_auth_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/auth.service.ts"
click node_user_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/user/user.service.ts"
click node_token_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/confirm-token/confirm-token.service.ts"
click node_question_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.controller.ts"
click node_question_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.service.ts"
click node_question_dao "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.dao.ts"
click node_option_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question-option/question-option.controller.ts"
click node_option_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question-option/question-option.service.ts"
click node_category_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/category/category.controller.ts"
click node_category_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/category/category.service.ts"
click node_notification_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/notification/notification.controller.ts"
click node_notification_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/notification/notification.service.ts"
click node_statistics_controller "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/statistics/statistics.controller.ts"
click node_statistics_service "https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/statistics/statistics.service.ts"

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_client_entry,node_home,node_quiz_ui,node_answer_ui,node_quiz_store,node_quiz_data,node_visitor toneBlue
class node_auth_controller,node_auth_service,node_user_service,node_token_service,node_mongo toneAmber
class node_question_controller,node_question_service,node_question_dao,node_option_controller,node_option_service,node_category_controller,node_category_service,node_api_entry toneMint
class node_notification_controller,node_notification_service,node_statistics_controller,node_statistics_service toneRose
```

## Components

### Quiz client

- [Client router](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/main.jsx): `Quiz-Tech-App/src/main.jsx`
- [Home screen](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Home/Home.jsx): `Quiz-Tech-App/src/components/Home/Home.jsx`
- [Quiz screen](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Quiz/Quiz.jsx): `Quiz-Tech-App/src/components/Quiz/Quiz.jsx`
- [Answer control](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/components/Quiz/Answer/Answer.jsx): `Quiz-Tech-App/src/components/Quiz/Answer/Answer.jsx`
- [Quiz state](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/store/quizStore.js): `Quiz-Tech-App/src/store/quizStore.js`
- [Quiz content](https://github.com/agatapouglof/quizz-system/blob/main/Quiz-Tech-App/src/data.js): `Quiz-Tech-App/src/data.js`

### Identity

- [Auth endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/auth.controller.ts): `quiz-tech-api/src/auth/auth.controller.ts`
- [Auth workflows](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/auth.service.ts): `quiz-tech-api/src/auth/auth.service.ts`
- [User operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/user/user.service.ts): `quiz-tech-api/src/user/user.service.ts`
- [Confirmation tokens](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/auth/confirm-token/confirm-token.service.ts): `quiz-tech-api/src/auth/confirm-token/confirm-token.service.ts`

### Quiz resources

- [Question endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.controller.ts): `quiz-tech-api/src/question/question.controller.ts`
- [Question operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.service.ts): `quiz-tech-api/src/question/question.service.ts`
- [Question persistence](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question/question.dao.ts): `quiz-tech-api/src/question/question.dao.ts`
- [Option endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question-option/question-option.controller.ts): `quiz-tech-api/src/question-option/question-option.controller.ts`
- [Option operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/question-option/question-option.service.ts): `quiz-tech-api/src/question-option/question-option.service.ts`
- [Category endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/category/category.controller.ts): `quiz-tech-api/src/category/category.controller.ts`
- [Category operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/category/category.service.ts): `quiz-tech-api/src/category/category.service.ts`

### Other API resources

- [Notification endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/notification/notification.controller.ts): `quiz-tech-api/src/notification/notification.controller.ts`
- [Notification operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/notification/notification.service.ts): `quiz-tech-api/src/notification/notification.service.ts`
- [Statistics endpoints](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/statistics/statistics.controller.ts): `quiz-tech-api/src/statistics/statistics.controller.ts`
- [Statistics operations](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/statistics/statistics.service.ts): `quiz-tech-api/src/statistics/statistics.service.ts`

### Other components

- **Quiz user**
- [API bootstrap](https://github.com/agatapouglof/quizz-system/blob/main/quiz-tech-api/src/main.ts): `quiz-tech-api/src/main.ts`
- **MongoDB**

## Connections

- Quiz user → Client router: opens
- Client router → Home screen: routes to
- Client router → Quiz screen: routes to
- Quiz user → Auth endpoints: requests auth
- Quiz user → Question endpoints: requests questions
- Quiz user → Option endpoints: requests options
- Quiz user → Category endpoints: requests categories
- Quiz user → Notification endpoints: requests notifications
- Quiz user → Statistics endpoints: requests statistics
- API bootstrap → MongoDB: connects
- Auth endpoints → Auth workflows: calls
- Auth workflows → User operations: calls
- Auth workflows → Confirmation tokens: calls
- Question endpoints → Question operations: calls
- Question operations → Question persistence
- Option endpoints → Option operations: calls
- Category endpoints → Category operations: calls
- Category endpoints → Auth workflows: resolves user
- Notification endpoints → Auth workflows: resolves user
- Notification endpoints → Notification operations: calls
- Statistics endpoints → Statistics operations: calls
