# mohamed-yaseen13/gpa-calculator architecture

> Architecture diagram of the GitHub repository mohamed-yaseen13/gpa-calculator, 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/mohamed-yaseen13/gpa-calculator
- Repository: https://github.com/mohamed-yaseen13/gpa-calculator

## Overview

GPA-Calculator is a cross-platform student planner centered on tracking semesters, courses, credits, and grades to calculate GPA and CGPA. The app also provides grade-scale configuration, mark conversion, what-if scenarios, notes, a calculator, and calendar/timetable planning. The tree and README establish these product areas, but the sampled source does not show Dart runtime calls or persistence wiring; the graph therefore maps documented responsibilities without asserting uncertain internal links.

Main entry points: [`lib/main.dart`](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/main.dart) (App entry), [`lib/feature/tabs/main_tab/ui/main_screen.dart`](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/main_tab/ui/main_screen.dart) (Academic overview), [`lib/feature/semester/ui/semester_screen.dart`](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/semester/ui/semester_screen.dart) (Semester management), [`lib/feature/course/ui/course_screen.dart`](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/course/ui/course_screen.dart) (Course management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_academic["Academic tracking"]
  node_home["Academic overview<br/>[main_screen.dart]"]
  node_semester["Semester management"]
  node_course["Course management<br/>[course_screen.dart]"]
  node_gpa["GPA calculations"]
  node_scenarios["What-if scenarios"]
end

subgraph group_tools["Calculation tools"]
  node_scale["Grade scales<br/>[scales_screen.dart]"]
  node_converter["Mark converter"]
  node_calculator["Mini calculator"]
end

subgraph group_planning["Planning features"]
  node_notes["Notes<br/>[notes_screen.dart]"]
  node_timetable["Timetable"]
  node_calendar["Calendar"]
  node_widget["Home widget"]
end

subgraph group_app["Application shell"]
  node_entry["App entry<br/>[main.dart]"]
  node_app_root["App root<br/>[gpa_app.dart]"]
  node_routing["Navigation<br/>[app_router.dart]"]
end

node_student(("Student"))

node_student -->|"opens"| node_entry
node_entry -->|"starts"| node_app_root
node_student -->|"manages records"| node_home
node_student -->|"manages semesters"| node_semester
node_student -->|"manages courses"| node_course
node_student -->|"configures grades"| node_scale
node_student -->|"converts marks"| node_converter
node_student -->|"calculates"| node_calculator
node_student -->|"plans outcomes"| node_scenarios
node_student -->|"records notes"| node_notes
node_student -->|"plans schedule"| node_timetable
node_student -->|"views events"| node_calendar
node_student -.->|"checks schedule"| node_widget

click node_entry "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/main.dart"
click node_app_root "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/gpa_app.dart"
click node_routing "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/core/routing/app_router.dart"
click node_home "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/main_tab/ui/main_screen.dart"
click node_semester "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/semester/ui/semester_screen.dart"
click node_course "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/course/ui/course_screen.dart"
click node_gpa "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/core/logic/gpa_calculations_cubit.dart"
click node_scale "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/scales/ui/scales_screen.dart"
click node_converter "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/mark_conventer_tab/ui/mark_converter_screen.dart"
click node_calculator "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/calculator_tab/ui/calculator_screen.dart"
click node_scenarios "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/scenarios/ui/scenarios_screen.dart"
click node_notes "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/notes_tab/ui/notes_screen.dart"
click node_timetable "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/timetable/ui/time_table_screen.dart"
click node_calendar "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/calendar/ui/calendar_screen.dart"
click node_widget "https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/android/app/src/main/kotlin/com/engmo/gpacalculator/CalendarWidgetProvider.kt"

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_home,node_semester,node_course,node_gpa,node_scenarios toneBlue
class node_scale,node_converter,node_calculator toneAmber
class node_notes,node_timetable,node_calendar,node_widget toneMint
class node_entry,node_app_root,node_routing toneRose
class node_student toneIndigo
```

## Components

### Academic tracking

- [Academic overview](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/main_tab/ui/main_screen.dart): `lib/feature/tabs/main_tab/ui/main_screen.dart`
- [Semester management](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/semester/ui/semester_screen.dart): `lib/feature/semester/ui/semester_screen.dart`
- [Course management](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/course/ui/course_screen.dart): `lib/feature/course/ui/course_screen.dart`
- [GPA calculations](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/core/logic/gpa_calculations_cubit.dart): `lib/core/logic/gpa_calculations_cubit.dart`
- [What-if scenarios](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/scenarios/ui/scenarios_screen.dart): `lib/feature/scenarios/ui/scenarios_screen.dart`

### Calculation tools

- [Grade scales](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/scales/ui/scales_screen.dart): `lib/feature/scales/ui/scales_screen.dart`
- [Mark converter](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/mark_conventer_tab/ui/mark_converter_screen.dart): `lib/feature/tabs/mark_conventer_tab/ui/mark_converter_screen.dart`
- [Mini calculator](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/calculator_tab/ui/calculator_screen.dart): `lib/feature/tabs/calculator_tab/ui/calculator_screen.dart`

### Planning features

- [Notes](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/tabs/notes_tab/ui/notes_screen.dart): `lib/feature/tabs/notes_tab/ui/notes_screen.dart`
- [Timetable](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/timetable/ui/time_table_screen.dart): `lib/feature/timetable/ui/time_table_screen.dart`
- [Calendar](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/feature/calendar/ui/calendar_screen.dart): `lib/feature/calendar/ui/calendar_screen.dart`
- [Home widget](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/android/app/src/main/kotlin/com/engmo/gpacalculator/CalendarWidgetProvider.kt): `android/app/src/main/kotlin/com/engmo/gpacalculator/CalendarWidgetProvider.kt`

### Application shell

- [App entry](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/main.dart): `lib/main.dart`
- [App root](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/gpa_app.dart): `lib/gpa_app.dart`
- [Navigation](https://github.com/mohamed-yaseen13/gpa-calculator/blob/development/lib/core/routing/app_router.dart): `lib/core/routing/app_router.dart`

### Other components

- **Student**

## Connections

- Student → App entry: opens
- App entry → App root: starts
- Student → Academic overview: manages records
- Student → Semester management: manages semesters
- Student → Course management: manages courses
- Student → Grade scales: configures grades
- Student → Mark converter: converts marks
- Student → Mini calculator: calculates
- Student → What-if scenarios: plans outcomes
- Student → Notes: records notes
- Student → Timetable: plans schedule
- Student → Calendar: views events
- Student → Home widget: checks schedule
