# charliezkie-cloud/bullymap architecture

> Architecture diagram of the GitHub repository charliezkie-cloud/bullymap, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/charliezkie-cloud/bullymap
- Repository: https://github.com/charliezkie-cloud/bullymap

## Overview

Bully Map is a Flutter mobile navigation app whose distinguishing capability is rude spoken guidance in English, Tagalog, and Cebuano. Its documented product flow is navigation using Mapbox maps and routing, with custom-language voice guidance; the tree also shows home, navigation, intro, and settings screens. Dart implementation excerpts were not provided, so internal screen-to-controller and service calls cannot be verified. The graph preserves the documented capabilities and visible runtime areas without asserting those internal connections.

Main entry points: [`lib/features/navigation/presentation/screens/navigation_screen.dart`](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/navigation/presentation/screens/navigation_screen.dart) (Navigation screen), [`lib/features/home/presentation/screens/home_screen.dart`](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/screens/home_screen.dart) (Home screen), [`lib/main.dart`](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/main.dart) (App bootstrap), [`lib/features/navigation`](https://github.com/charliezkie-cloud/bullymap/tree/main/lib/features/navigation) (Custom voice guidance)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App experience"]
  node_bootstrap["App bootstrap<br/>[main.dart]"]
  node_routing["App routing<br/>[router.dart]"]
  node_routes["Route definitions<br/>[routes.dart]"]
  node_intro["Intro screen<br/>[intro_screen.dart]"]
  node_home["Home screen<br/>[home_screen.dart]"]
  node_settings["Settings screen"]
  node_navigation_screen["Navigation screen"]
  node_nav_scaffold["Navigation scaffold"]
  node_bottom_nav["Bottom navigation"]
end

subgraph group_navigation["Map navigation"]
  node_map_controller["Map controller"]
  node_main_map["Map view<br/>[main_map.dart]"]
  node_map_search["Map search"]
  node_location_details["Location details"]
  node_directions["Directions action"]
  node_search_service["Location search"]
  node_pinned_location["Pinned location"]
  node_voice_guidance["Custom voice guidance"]
end

subgraph group_platform["Platform runtime"]
  node_android_host["Android host<br/>[MainActivity.kt]"]
  node_ios_host["iOS host<br/>[AppDelegate.swift]"]
  node_windows_host["Windows Flutter host<br/>[flutter_window.cpp]"]
end

subgraph group_shared["Shared app services"]
  node_location_service["Device location"]
  node_theme_controller["Theme controller"]
  node_theme_switch["Theme switch<br/>[theme_switch.dart]"]
end

node_user(("User"))
node_mapbox{{"Mapbox maps and routing"}}

node_user -.->|"uses app"| node_bootstrap
node_home -.->|"uses maps and routing"| node_mapbox
node_navigation_screen -.->|"uses maps and routing"| node_mapbox
node_navigation_screen -.->|"provides guidance"| node_voice_guidance

click node_bootstrap "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/main.dart"
click node_routing "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/app/router.dart"
click node_routes "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/app/routes.dart"
click node_intro "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/intro/presentation/screens/intro_screen.dart"
click node_home "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/screens/home_screen.dart"
click node_settings "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/settings/presentation/screens/settings_screen.dart"
click node_navigation_screen "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/navigation/presentation/screens/navigation_screen.dart"
click node_nav_scaffold "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/main_navigation_scaffold.dart"
click node_bottom_nav "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/app_bottom_navigation.dart"
click node_map_controller "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/controllers/map_controller.dart"
click node_main_map "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/main_map.dart"
click node_map_search "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/map_search_bar.dart"
click node_location_details "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/location_details_sheet.dart"
click node_directions "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/directions_action_button.dart"
click node_search_service "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/data/services/location_search_service.dart"
click node_pinned_location "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/models/pinned_location.dart"
click node_voice_guidance "https://github.com/charliezkie-cloud/bullymap/tree/main/lib/features/navigation"
click node_location_service "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/core/services/location_service.dart"
click node_theme_controller "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/core/theme/theme_controller.dart"
click node_theme_switch "https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/theme_switch.dart"
click node_android_host "https://github.com/charliezkie-cloud/bullymap/blob/main/android/app/src/main/kotlin/com/example/bullymap/MainActivity.kt"
click node_ios_host "https://github.com/charliezkie-cloud/bullymap/blob/main/ios/Runner/AppDelegate.swift"
click node_windows_host "https://github.com/charliezkie-cloud/bullymap/blob/main/windows/runner/flutter_window.cpp"

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_routing,node_routes,node_intro,node_home,node_settings,node_navigation_screen,node_nav_scaffold,node_bottom_nav,node_user toneBlue
class node_map_controller,node_main_map,node_map_search,node_location_details,node_directions,node_search_service,node_pinned_location,node_voice_guidance toneAmber
class node_android_host,node_ios_host,node_windows_host toneMint
class node_location_service,node_theme_controller,node_theme_switch toneRose
class node_mapbox toneIndigo
```

## Components

### App experience

- [App bootstrap](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/main.dart): `lib/main.dart`
- [App routing](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/app/router.dart): `lib/app/router.dart`
- [Route definitions](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/app/routes.dart): `lib/app/routes.dart`
- [Intro screen](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/intro/presentation/screens/intro_screen.dart): `lib/features/intro/presentation/screens/intro_screen.dart`
- [Home screen](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/screens/home_screen.dart): `lib/features/home/presentation/screens/home_screen.dart`
- [Settings screen](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/settings/presentation/screens/settings_screen.dart): `lib/features/settings/presentation/screens/settings_screen.dart`
- [Navigation screen](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/navigation/presentation/screens/navigation_screen.dart): `lib/features/navigation/presentation/screens/navigation_screen.dart`
- [Navigation scaffold](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/main_navigation_scaffold.dart): `lib/widgets/main_navigation_scaffold.dart`
- [Bottom navigation](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/app_bottom_navigation.dart): `lib/widgets/app_bottom_navigation.dart`

### Map navigation

- [Map controller](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/controllers/map_controller.dart): `lib/features/home/controllers/map_controller.dart`
- [Map view](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/main_map.dart): `lib/features/home/presentation/widgets/main_map.dart`
- [Map search](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/map_search_bar.dart): `lib/features/home/presentation/widgets/map_search_bar.dart`
- [Location details](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/location_details_sheet.dart): `lib/features/home/presentation/widgets/location_details_sheet.dart`
- [Directions action](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/presentation/widgets/directions_action_button.dart): `lib/features/home/presentation/widgets/directions_action_button.dart`
- [Location search](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/data/services/location_search_service.dart): `lib/features/home/data/services/location_search_service.dart`
- [Pinned location](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/features/home/models/pinned_location.dart): `lib/features/home/models/pinned_location.dart`
- [Custom voice guidance](https://github.com/charliezkie-cloud/bullymap/tree/main/lib/features/navigation): `lib/features/navigation`

### Platform runtime

- [Android host](https://github.com/charliezkie-cloud/bullymap/blob/main/android/app/src/main/kotlin/com/example/bullymap/MainActivity.kt): `android/app/src/main/kotlin/com/example/bullymap/MainActivity.kt`
- [iOS host](https://github.com/charliezkie-cloud/bullymap/blob/main/ios/Runner/AppDelegate.swift): `ios/Runner/AppDelegate.swift`
- [Windows Flutter host](https://github.com/charliezkie-cloud/bullymap/blob/main/windows/runner/flutter_window.cpp): `windows/runner/flutter_window.cpp`

### Shared app services

- [Device location](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/core/services/location_service.dart): `lib/core/services/location_service.dart`
- [Theme controller](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/core/theme/theme_controller.dart): `lib/core/theme/theme_controller.dart`
- [Theme switch](https://github.com/charliezkie-cloud/bullymap/blob/main/lib/widgets/theme_switch.dart): `lib/widgets/theme_switch.dart`

### Other components

- **User**
- **Mapbox maps and routing**

## Connections

- User → App bootstrap: uses app (evidence: `README.md`)
- Home screen → Mapbox maps and routing: uses maps and routing (evidence: `README.md`)
- Navigation screen → Mapbox maps and routing: uses maps and routing (evidence: `README.md`)
- Navigation screen → Custom voice guidance: provides guidance (evidence: `README.md`)
