# bennorichters/bnoggles architecture

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

- Interactive diagram: https://gitdiagram.com/bennorichters/bnoggles
- Repository: https://github.com/bennorichters/bnoggles

## Overview

Bnoggles is a Flutter word-search game for iOS and Android. Players swipe through a letter grid to find hidden words; the app presents gameplay and then results. The tree also shows player and settings screens, language and dictionary data, and separate game-logic modules for boards, answers, and scoring. Those capabilities are represented, but the Dart sources were not excerpted, so their specific call relationships cannot be verified; dashed, uncited edges indicate the documented or tree-implied flow rather than inspected calls.

Main entry points: [`lib/screens/game/game_screen.dart`](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/game_screen.dart) (Game screen), [`lib/screens/result/result_screen.dart`](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/result_screen.dart) (Results screen), [`lib/utils/gamelogic/game.dart`](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/game.dart) (Game state), [`lib/screens/player/player_screen.dart`](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/player/player_screen.dart) (Player screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry"]
  node_main["Flutter app<br/>[main.dart]"]
end

subgraph group_play["Game play"]
  node_game_screen["Game screen<br/>[game_screen.dart]"]
  node_board_view["Game board view<br/>[game_board.dart]"]
  node_game_info["Game information<br/>[game_info.dart]"]
  node_word_list["Found word list"]
  node_clock["Game clock<br/>[game_clock.dart]"]
  node_progress["Game progress<br/>[game_progress.dart]"]
  node_result["Results screen<br/>[result_screen.dart]"]
  node_result_board["Result board<br/>[result_board.dart]"]
  node_result_words["All words"]
  node_result_score["Result scores"]
end

subgraph group_logic["Game logic"]
  node_game["Game state<br/>[game.dart]"]
  node_board["Letter board<br/>[board.dart]"]
  node_answer["Word answers<br/>[answer.dart]"]
  node_dictionary["Dictionary<br/>[dictionary.dart]"]
  node_sequence["Letter sequence"]
  node_score["Scoring<br/>[score.dart]"]
  node_frequencies["Letter frequencies<br/>[frequency.dart]"]
end

subgraph group_support["Player and settings"]
  node_player_screen["Player screen<br/>[player_screen.dart]"]
  node_settings["Settings screen"]
  node_preferences["Preferences<br/>[preferences.dart]"]
  node_language["Language data<br/>[language.dart]"]
end

node_player(("Player"))

node_player -.->|"opens"| node_main
node_main -.->|"shows"| node_player_screen
node_player_screen -.->|"configures"| node_settings
node_settings -.->|"stores settings"| node_preferences
node_settings -.->|"selects language"| node_language
node_player_screen -.->|"starts game"| node_game_screen
node_game_screen -.->|"renders"| node_board_view
node_game_screen -.->|"uses state"| node_game
node_game_screen -.->|"shows info"| node_game_info
node_game_screen -.->|"shows words"| node_word_list
node_game_screen -.->|"shows time"| node_clock
node_game_screen -.->|"shows progress"| node_progress
node_game -.->|"uses board"| node_board
node_game -.->|"checks answers"| node_answer
node_answer -.->|"validates words"| node_dictionary
node_board_view -.->|"captures swipe"| node_sequence
node_game_screen -.->|"uses scoring"| node_score
node_game -.->|"uses frequencies"| node_frequencies
node_game_screen -.->|"shows results"| node_result
node_result -.->|"renders"| node_result_board
node_result -.->|"lists words"| node_result_words
node_result -.->|"shows score"| node_result_score

click node_main "https://github.com/bennorichters/bnoggles/blob/master/lib/main.dart"
click node_player_screen "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/player/player_screen.dart"
click node_settings "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/settings/settings_screen.dart"
click node_preferences "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/preferences.dart"
click node_language "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/language.dart"
click node_game_screen "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/game_screen.dart"
click node_board_view "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_board.dart"
click node_game_info "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/game_info.dart"
click node_word_list "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_word_list.dart"
click node_clock "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_clock.dart"
click node_progress "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_progress.dart"
click node_game "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/game.dart"
click node_board "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/board.dart"
click node_answer "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/answer.dart"
click node_dictionary "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/dictionary.dart"
click node_sequence "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/lettter_sequence.dart"
click node_score "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/score.dart"
click node_frequencies "https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/frequency.dart"
click node_result "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/result_screen.dart"
click node_result_board "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_board.dart"
click node_result_words "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_all_words_list.dart"
click node_result_score "https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_single_player_score.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_main toneBlue
class node_game_screen,node_board_view,node_game_info,node_word_list,node_clock,node_progress,node_result,node_result_board,node_result_words,node_result_score toneAmber
class node_game,node_board,node_answer,node_dictionary,node_sequence,node_score,node_frequencies toneMint
class node_player_screen,node_settings,node_preferences,node_language toneRose
class node_player toneIndigo
```

## Components

### App entry

- [Flutter app](https://github.com/bennorichters/bnoggles/blob/master/lib/main.dart): `lib/main.dart`

### Game play

- [Game screen](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/game_screen.dart): `lib/screens/game/game_screen.dart`
- [Game board view](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_board.dart): `lib/screens/game/widgets/game_board.dart`
- [Game information](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/game_info.dart): `lib/utils/game_info.dart`
- [Found word list](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_word_list.dart): `lib/screens/game/widgets/game_word_list.dart`
- [Game clock](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_clock.dart): `lib/screens/game/widgets/game_clock.dart`
- [Game progress](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/game/widgets/game_progress.dart): `lib/screens/game/widgets/game_progress.dart`
- [Results screen](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/result_screen.dart): `lib/screens/result/result_screen.dart`
- [Result board](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_board.dart): `lib/screens/result/widgets/result_board.dart`
- [All words](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_all_words_list.dart): `lib/screens/result/widgets/result_all_words_list.dart`
- [Result scores](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/result/widgets/result_single_player_score.dart): `lib/screens/result/widgets/result_single_player_score.dart`

### Game logic

- [Game state](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/game.dart): `lib/utils/gamelogic/game.dart`
- [Letter board](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/board.dart): `lib/utils/gamelogic/board.dart`
- [Word answers](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/answer.dart): `lib/utils/gamelogic/answer.dart`
- [Dictionary](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/dictionary.dart): `lib/utils/gamelogic/dictionary.dart`
- [Letter sequence](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/lettter_sequence.dart): `lib/utils/gamelogic/lettter_sequence.dart`
- [Scoring](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/score.dart): `lib/utils/gamelogic/score.dart`
- [Letter frequencies](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/gamelogic/frequency.dart): `lib/utils/gamelogic/frequency.dart`

### Player and settings

- [Player screen](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/player/player_screen.dart): `lib/screens/player/player_screen.dart`
- [Settings screen](https://github.com/bennorichters/bnoggles/blob/master/lib/screens/settings/settings_screen.dart): `lib/screens/settings/settings_screen.dart`
- [Preferences](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/preferences.dart): `lib/utils/preferences.dart`
- [Language data](https://github.com/bennorichters/bnoggles/blob/master/lib/utils/language.dart): `lib/utils/language.dart`

### Other components

- **Player**

## Connections

- Player → Flutter app: opens (evidence: `README.md`)
- Flutter app → Player screen: shows
- Player screen → Settings screen: configures
- Settings screen → Preferences: stores settings
- Settings screen → Language data: selects language
- Player screen → Game screen: starts game
- Game screen → Game board view: renders
- Game screen → Game state: uses state
- Game screen → Game information: shows info
- Game screen → Found word list: shows words
- Game screen → Game clock: shows time
- Game screen → Game progress: shows progress
- Game state → Letter board: uses board
- Game state → Word answers: checks answers
- Word answers → Dictionary: validates words
- Game board view → Letter sequence: captures swipe
- Game screen → Scoring: uses scoring
- Game state → Letter frequencies: uses frequencies
- Game screen → Results screen: shows results
- Results screen → Result board: renders
- Results screen → All words: lists words
- Results screen → Result scores: shows score
