# anan-elayan/project_mongodb_quiz_app architecture

> Architecture diagram of the GitHub repository anan-elayan/project_mongodb_quiz_app, 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/anan-elayan/project_mongodb_quiz_app
- Repository: https://github.com/anan-elayan/project_mongodb_quiz_app

## Overview

This is a cross-platform Flutter quiz app for teachers and students. The main workflow is account access, role-specific quiz management or participation, then results and feedback. The README documents the capabilities and a separate Node.js/MongoDB server, but the sampled source does not include the Dart implementation; screen-to-service wiring is therefore not asserted. Paths below are taken from the repository tree.

Main entry points: [`lib/screens/teachers_panel.dart`](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/teachers_panel.dart) (Teacher panel), [`lib/screens/quiz_page.dart`](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/quiz_page.dart) (Quiz participation), [`lib/services/networking.dart`](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/services/networking.dart) (Network client), [`lib/screens/login_screen.dart`](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/login_screen.dart) (Login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and roles"]
  node_login["Login<br/>[login_screen.dart]"]
  node_register["Registration"]
  node_settings["Settings"]
  node_routes["Navigation routes<br/>[route.dart]"]
end

subgraph group_teacher["Teacher tools"]
  node_teacher_panel["Teacher panel"]
  node_add_question["Quiz editing"]
  node_teacher_questions["Question details"]
  node_student_details["Student details"]
end

subgraph group_student["Student quiz flow"]
  node_quiz_page["Quiz participation<br/>[quiz_page.dart]"]
  node_quiz_model["Quiz data<br/>[quiz.dart]"]
end

subgraph group_shared["Shared app services"]
  node_user_model["User data<br/>[user.dart]"]
  node_networking["Network client<br/>[networking.dart]"]
  node_preferences["Local preferences<br/>[pref.dart]"]
end

node_user(("Teacher or student"))
node_server[("Quiz backend")]

node_user -->|"signs in"| node_login
node_user -->|"creates account"| node_register
node_user -->|"teacher access"| node_teacher_panel
node_user -->|"takes quiz"| node_quiz_page
node_teacher_panel -->|"manages quizzes"| node_add_question
node_teacher_panel -->|"reviews questions"| node_teacher_questions
node_teacher_panel -->|"reviews students"| node_student_details
node_quiz_page -->|"uses quiz data"| node_quiz_model
node_networking -->|"sends requests"| node_server

click node_login "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/login_screen.dart"
click node_register "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/register_screen.dart"
click node_settings "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/settings_screen.dart"
click node_routes "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/route/route.dart"
click node_teacher_panel "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/teachers_panel.dart"
click node_add_question "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/add_question_page.dart"
click node_teacher_questions "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/teacher_questions_details.dart"
click node_student_details "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/show_students_details.dart"
click node_quiz_page "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/quiz_page.dart"
click node_quiz_model "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/model/quiz.dart"
click node_user_model "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/model/user.dart"
click node_networking "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/services/networking.dart"
click node_preferences "https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/services/pref.dart"

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_login,node_register,node_settings,node_routes toneBlue
class node_teacher_panel,node_add_question,node_teacher_questions,node_student_details,node_server toneAmber
class node_quiz_page,node_quiz_model toneMint
class node_user_model,node_networking,node_preferences toneRose
class node_user toneIndigo
```

## Components

### Access and roles

- [Login](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/login_screen.dart): `lib/screens/login_screen.dart`
- [Registration](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/register_screen.dart): `lib/screens/register_screen.dart`
- [Settings](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/settings_screen.dart): `lib/screens/settings_screen.dart`
- [Navigation routes](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/route/route.dart): `lib/route/route.dart`

### Teacher tools

- [Teacher panel](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/teachers_panel.dart): `lib/screens/teachers_panel.dart`
- [Quiz editing](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/add_question_page.dart): `lib/screens/add_question_page.dart`
- [Question details](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/teacher_questions_details.dart): `lib/screens/teacher_questions_details.dart`
- [Student details](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/show_students_details.dart): `lib/screens/show_students_details.dart`

### Student quiz flow

- [Quiz participation](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/screens/quiz_page.dart): `lib/screens/quiz_page.dart`
- [Quiz data](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/model/quiz.dart): `lib/model/quiz.dart`

### Shared app services

- [User data](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/model/user.dart): `lib/model/user.dart`
- [Network client](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/services/networking.dart): `lib/services/networking.dart`
- [Local preferences](https://github.com/anan-elayan/project_mongodb_quiz_app/blob/master/lib/services/pref.dart): `lib/services/pref.dart`

### Other components

- **Teacher or student**
- **Quiz backend**

## Connections

- Teacher or student → Login: signs in
- Teacher or student → Registration: creates account
- Teacher or student → Teacher panel: teacher access
- Teacher or student → Quiz participation: takes quiz
- Teacher panel → Quiz editing: manages quizzes
- Teacher panel → Question details: reviews questions
- Teacher panel → Student details: reviews students
- Quiz participation → Quiz data: uses quiz data
- Network client → Quiz backend: sends requests
