# ahmedabdoelhawary/flutter-algorithm-visualizer architecture

> Architecture diagram of the GitHub repository ahmedabdoelhawary/flutter-algorithm-visualizer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ahmedabdoelhawary/flutter-algorithm-visualizer
- Repository: https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer

## Overview

AlgoDive is an offline-first mobile app for learning algorithms: users explore visualizations, then practice coding problems in an on-device editor and track their progress. The README documents optional sign-in and cloud sync, plus settings and analytics. Paths and major capabilities are grounded in the tree and README; sampled source did not include Flutter feature implementations, so internal call ownership and detailed service wiring cannot be verified.

Main entry points: [`lib/features/home`](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/home) (Home), [`lib/bootstrap.dart`](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/blob/develop/lib/bootstrap.dart) (App bootstrap), [`lib/features/challenge/presentation`](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/presentation) (Problem catalogue), [`lib/features/challenge/data`](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/data) (Practice state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App experience"]
  node_bootstrap["App bootstrap<br/>[bootstrap.dart]"]
  node_onboarding["Onboarding"]
  node_home["Home"]
end

subgraph group_visual["Algorithm visualizers"]
  node_sorting["Sorting visualizer"]
  node_searching["Pathfinding visualizer"]
end

subgraph group_practice["Coding practice"]
  node_problemset["Problem catalogue"]
  node_problemdata["Problem definitions<br/>[problems.json]"]
  node_editor["Code editor"]
  node_execution["Code execution"]
  node_grading["Test-case grading"]
  node_challenge_state["Practice state"]
end

subgraph group_progress["Progress and preferences"]
  node_profile["Progress profile"]
  node_settings["Settings"]
  node_localstore["Device storage"]
end

subgraph group_services["Optional cloud services"]
  node_auth["Authentication"]
  node_sync["Progress sync"]
  node_monitoring["Crash and analytics"]
end

node_user(("Learner"))
node_remote{{"Firebase services"}}

node_user -->|"opens app"| node_bootstrap
node_bootstrap -->|"starts"| node_onboarding
node_onboarding -->|"continues to"| node_home
node_home -->|"opens"| node_sorting
node_home -->|"opens"| node_searching
node_home -->|"opens"| node_problemset
node_problemset -->|"loads problems"| node_problemdata
node_problemset -->|"opens problem"| node_editor
node_editor -->|"runs code"| node_execution
node_execution -->|"produces results"| node_grading
node_grading -->|"records outcome"| node_challenge_state
node_challenge_state -->|"supplies progress"| node_profile
node_home -->|"opens"| node_profile
node_home -->|"opens"| node_settings
node_profile -->|"reads activity"| node_localstore
node_challenge_state -->|"persists progress"| node_localstore
node_user -.->|"signs in optionally"| node_auth
node_auth -.->|"authenticates"| node_remote
node_user -.->|"requests sync"| node_sync
node_sync -.->|"syncs progress"| node_remote
node_bootstrap -.->|"enables optionally"| node_monitoring
node_monitoring -.->|"sends reports"| node_remote

click node_bootstrap "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/blob/develop/lib/bootstrap.dart"
click node_onboarding "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/onboarding"
click node_home "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/home"
click node_sorting "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/visualize/view/sub_view/sorting"
click node_searching "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/visualize/view/sub_view/searching"
click node_problemset "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/presentation"
click node_problemdata "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/blob/develop/assets/problems.json"
click node_editor "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor"
click node_execution "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor/src/execution"
click node_grading "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor/src/testcase"
click node_challenge_state "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/data"
click node_profile "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/profile"
click node_settings "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/settings"
click node_localstore "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/storage"
click node_auth "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/auth"
click node_sync "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/presentation/view_model/sync"
click node_monitoring "https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/monitoring"

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_bootstrap,node_onboarding,node_home toneBlue
class node_sorting,node_searching toneAmber
class node_problemset,node_problemdata,node_editor,node_execution,node_grading,node_challenge_state toneMint
class node_profile,node_settings,node_localstore toneRose
class node_auth,node_sync,node_monitoring,node_user,node_remote toneIndigo
```

## Components

### App experience

- [App bootstrap](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/blob/develop/lib/bootstrap.dart): `lib/bootstrap.dart`
- [Onboarding](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/onboarding): `lib/features/onboarding`
- [Home](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/home): `lib/features/home`

### Algorithm visualizers

- [Sorting visualizer](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/visualize/view/sub_view/sorting): `lib/features/visualize/view/sub_view/sorting`
- [Pathfinding visualizer](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/visualize/view/sub_view/searching): `lib/features/visualize/view/sub_view/searching`

### Coding practice

- [Problem catalogue](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/presentation): `lib/features/challenge/presentation`
- [Problem definitions](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/blob/develop/assets/problems.json): `assets/problems.json`
- [Code editor](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor): `lib/core/custom_packages/custom_code_editor`
- [Code execution](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor/src/execution): `lib/core/custom_packages/custom_code_editor/src/execution`
- [Test-case grading](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/custom_packages/custom_code_editor/src/testcase): `lib/core/custom_packages/custom_code_editor/src/testcase`
- [Practice state](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/data): `lib/features/challenge/data`

### Progress and preferences

- [Progress profile](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/profile): `lib/features/profile`
- [Settings](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/settings): `lib/features/settings`
- [Device storage](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/storage): `lib/core/storage`

### Optional cloud services

- [Authentication](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/auth): `lib/features/auth`
- [Progress sync](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/features/challenge/presentation/view_model/sync): `lib/features/challenge/presentation/view_model/sync`
- [Crash and analytics](https://github.com/ahmedabdoelhawary/flutter-algorithm-visualizer/tree/develop/lib/core/monitoring): `lib/core/monitoring`

### Other components

- **Learner**
- **Firebase services**

## Connections

- Learner → App bootstrap: opens app
- App bootstrap → Onboarding: starts
- Onboarding → Home: continues to
- Home → Sorting visualizer: opens
- Home → Pathfinding visualizer: opens
- Home → Problem catalogue: opens
- Problem catalogue → Problem definitions: loads problems
- Problem catalogue → Code editor: opens problem
- Code editor → Code execution: runs code
- Code execution → Test-case grading: produces results
- Test-case grading → Practice state: records outcome
- Practice state → Progress profile: supplies progress
- Home → Progress profile: opens
- Home → Settings: opens
- Progress profile → Device storage: reads activity
- Practice state → Device storage: persists progress
- Learner → Authentication: signs in optionally
- Authentication → Firebase services: authenticates
- Learner → Progress sync: requests sync
- Progress sync → Firebase services: syncs progress
- App bootstrap → Crash and analytics: enables optionally
- Crash and analytics → Firebase services: sends reports
