# hbx921/vocaday_app architecture

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

- Interactive diagram: https://gitdiagram.com/hbx921/vocaday_app
- Repository: https://github.com/hbx921/vocaday_app

## Overview

Vocaday is a Flutter English-vocabulary learning app. The principal documented workflow is to find vocabulary, view word details, and practise through quiz, puzzle, or flashcards; profile and activity pages expose progress and related features. The README and tree establish these product areas and the layered feature layout, but the sampled source does not show their runtime wiring, so uncertain calls are omitted. Firebase setup is documented, but its specific runtime use is not sampled.

Main entry points: [`lib/main.dart`](https://github.com/hbx921/vocaday_app/blob/main/lib/main.dart) (App entry), [`lib/app.dart`](https://github.com/hbx921/vocaday_app/blob/main/lib/app.dart) (App setup), [`lib/features/word/presentation/blocs/search_word/search_word_bloc.dart`](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/blocs/search_word/search_word_bloc.dart) (Word search), [`lib/features/word/data/repositories/word_repository_impl.dart`](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/data/repositories/word_repository_impl.dart) (Word repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["App shell"]
  node_app_entry["App entry<br/>[main.dart]"]
  node_app_shell["App setup<br/>[app.dart]"]
  node_navigation["Routes<br/>[route_manager.dart]"]
  node_home["Home<br/>[home_page.dart]"]
end

subgraph group_vocabulary["Vocabulary learning"]
  node_search["Word search"]
  node_word_data["Word data"]
  node_word_repository["Word repository"]
  node_word_detail["Word details"]
  node_word_list["Word lists"]
  node_cart["Word bag"]
end

subgraph group_practice["Practice activities"]
  node_activities["Activity<br/>[activity_page.dart]"]
  node_quiz["Quiz"]
  node_puzzle["Sliding puzzle"]
  node_flashcards["Flashcards"]
  node_game_data["Game data"]
end

subgraph group_account["Account and progress"]
  node_profile["Profile<br/>[profile_page.dart]"]
  node_user_profile["User profile data"]
  node_authentication["Authentication"]
  node_auth_data["Auth data source"]
end

subgraph group_platform["Platform services"]
  node_firebase[("Firebase services")]
end

node_learner(("Learner"))

node_learner -->|"opens app"| node_app_entry
node_app_entry -->|"starts"| node_app_shell
node_app_shell -->|"sets up"| node_navigation
node_learner -->|"views"| node_home
node_learner -->|"searches"| node_search
node_search -->|"requests words"| node_word_repository
node_word_repository -->|"reads"| node_word_data
node_learner -->|"opens"| node_word_detail
node_learner -->|"browses"| node_word_list
node_learner -->|"manages bag"| node_cart
node_learner -->|"opens"| node_activities
node_learner -->|"practises"| node_quiz
node_learner -->|"plays"| node_puzzle
node_learner -->|"reviews"| node_flashcards
node_learner -->|"views progress"| node_profile
node_learner -->|"signs in"| node_authentication
node_authentication -->|"requests auth"| node_auth_data
node_auth_data -.->|"uses"| node_firebase
node_game_data -.->|"uses"| node_firebase
node_user_profile -.->|"uses"| node_firebase

click node_app_entry "https://github.com/hbx921/vocaday_app/blob/main/lib/main.dart"
click node_app_shell "https://github.com/hbx921/vocaday_app/blob/main/lib/app.dart"
click node_navigation "https://github.com/hbx921/vocaday_app/blob/main/lib/app/routes/route_manager.dart"
click node_home "https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/home/home_page.dart"
click node_search "https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/blocs/search_word/search_word_bloc.dart"
click node_word_data "https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/data/data_sources/word_local_data_source.dart"
click node_word_repository "https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/data/repositories/word_repository_impl.dart"
click node_word_detail "https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/pages/word_detail_bottom_sheet.dart"
click node_word_list "https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/blocs/word_list/word_list_cubit.dart"
click node_cart "https://github.com/hbx921/vocaday_app/blob/main/lib/features/user/user_cart/presentation/pages/cart_page_body.dart"
click node_activities "https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/activity/activity_page.dart"
click node_quiz "https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/presentation/pages/quiz/game_quiz_page.dart"
click node_puzzle "https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/presentation/pages/sliding_puzzle/sliding_puzzle_page.dart"
click node_flashcards "https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/activity/activity_flash_card_page.dart"
click node_game_data "https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/data/data_sources/game_remote_data_source.dart"
click node_profile "https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/profile/profile_page.dart"
click node_user_profile "https://github.com/hbx921/vocaday_app/blob/main/lib/features/user/user_profile/data/data_sources/user_remote_data_source.dart"
click node_authentication "https://github.com/hbx921/vocaday_app/blob/main/lib/features/authentication/presentation/pages/authentication_page.dart"
click node_auth_data "https://github.com/hbx921/vocaday_app/blob/main/lib/features/authentication/data/data_sources/auth_remote_data_source.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_app_entry,node_app_shell,node_navigation,node_home toneBlue
class node_search,node_word_data,node_word_repository,node_word_detail,node_word_list,node_cart toneAmber
class node_activities,node_quiz,node_puzzle,node_flashcards,node_game_data toneMint
class node_profile,node_user_profile,node_authentication,node_auth_data toneRose
class node_firebase,node_learner toneIndigo
```

## Components

### App shell

- [App entry](https://github.com/hbx921/vocaday_app/blob/main/lib/main.dart): `lib/main.dart`
- [App setup](https://github.com/hbx921/vocaday_app/blob/main/lib/app.dart): `lib/app.dart`
- [Routes](https://github.com/hbx921/vocaday_app/blob/main/lib/app/routes/route_manager.dart): `lib/app/routes/route_manager.dart`
- [Home](https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/home/home_page.dart): `lib/app/screens/main/pages/home/home_page.dart`

### Vocabulary learning

- [Word search](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/blocs/search_word/search_word_bloc.dart): `lib/features/word/presentation/blocs/search_word/search_word_bloc.dart`
- [Word data](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/data/data_sources/word_local_data_source.dart): `lib/features/word/data/data_sources/word_local_data_source.dart`
- [Word repository](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/data/repositories/word_repository_impl.dart): `lib/features/word/data/repositories/word_repository_impl.dart`
- [Word details](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/pages/word_detail_bottom_sheet.dart): `lib/features/word/presentation/pages/word_detail_bottom_sheet.dart`
- [Word lists](https://github.com/hbx921/vocaday_app/blob/main/lib/features/word/presentation/blocs/word_list/word_list_cubit.dart): `lib/features/word/presentation/blocs/word_list/word_list_cubit.dart`
- [Word bag](https://github.com/hbx921/vocaday_app/blob/main/lib/features/user/user_cart/presentation/pages/cart_page_body.dart): `lib/features/user/user_cart/presentation/pages/cart_page_body.dart`

### Practice activities

- [Activity](https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/activity/activity_page.dart): `lib/app/screens/main/pages/activity/activity_page.dart`
- [Quiz](https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/presentation/pages/quiz/game_quiz_page.dart): `lib/features/mini_game/presentation/pages/quiz/game_quiz_page.dart`
- [Sliding puzzle](https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/presentation/pages/sliding_puzzle/sliding_puzzle_page.dart): `lib/features/mini_game/presentation/pages/sliding_puzzle/sliding_puzzle_page.dart`
- [Flashcards](https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/activity/activity_flash_card_page.dart): `lib/app/screens/main/pages/activity/activity_flash_card_page.dart`
- [Game data](https://github.com/hbx921/vocaday_app/blob/main/lib/features/mini_game/data/data_sources/game_remote_data_source.dart): `lib/features/mini_game/data/data_sources/game_remote_data_source.dart`

### Account and progress

- [Profile](https://github.com/hbx921/vocaday_app/blob/main/lib/app/screens/main/pages/profile/profile_page.dart): `lib/app/screens/main/pages/profile/profile_page.dart`
- [User profile data](https://github.com/hbx921/vocaday_app/blob/main/lib/features/user/user_profile/data/data_sources/user_remote_data_source.dart): `lib/features/user/user_profile/data/data_sources/user_remote_data_source.dart`
- [Authentication](https://github.com/hbx921/vocaday_app/blob/main/lib/features/authentication/presentation/pages/authentication_page.dart): `lib/features/authentication/presentation/pages/authentication_page.dart`
- [Auth data source](https://github.com/hbx921/vocaday_app/blob/main/lib/features/authentication/data/data_sources/auth_remote_data_source.dart): `lib/features/authentication/data/data_sources/auth_remote_data_source.dart`

### Platform services

- **Firebase services**

### Other components

- **Learner**

## Connections

- Learner → App entry: opens app
- App entry → App setup: starts
- App setup → Routes: sets up
- Learner → Home: views
- Learner → Word search: searches
- Word search → Word repository: requests words
- Word repository → Word data: reads
- Learner → Word details: opens
- Learner → Word lists: browses
- Learner → Word bag: manages bag
- Learner → Activity: opens
- Learner → Quiz: practises
- Learner → Sliding puzzle: plays
- Learner → Flashcards: reviews
- Learner → Profile: views progress
- Learner → Authentication: signs in
- Authentication → Auth data source: requests auth
- Auth data source → Firebase services: uses
- Game data → Firebase services: uses
- User profile data → Firebase services: uses
