# scrotjame/app_1 architecture

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

- Interactive diagram: https://gitdiagram.com/scrotjame/app_1
- Repository: https://github.com/scrotjame/app_1

## Overview

The tree suggests a Flutter vocabulary-learning app with study activities, progress tracking, and companion/game features, but the README describes only a starter project and no Dart source was excerpted. The workflow below is therefore a cautious map inferred from module names; dashed, uncited edges are unverified rather than confirmed call paths.

Main entry points: [`lib/page/home_page.dart`](https://github.com/scrotjame/app_1/blob/master/lib/page/home_page.dart) (Home), [`lib/page/learning/learning_page.dart`](https://github.com/scrotjame/app_1/blob/master/lib/page/learning/learning_page.dart) (Learning Session), [`lib/repository`](https://github.com/scrotjame/app_1/tree/master/lib/repository) (Domain Repositories), [`lib/main.dart`](https://github.com/scrotjame/app_1/blob/master/lib/main.dart) (App Entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and Navigation"]
  node_entry["App Entry<br/>[main.dart]"]
  node_routing["App Routing"]
  node_home["Home<br/>[home_page.dart]"]
end

subgraph group_study["Vocabulary Study"]
  node_vocab["Vocabulary Lists"]
  node_units["Study Units"]
  node_learning["Learning Session<br/>[learning_page.dart]"]
  node_flashcards["Flash Cards"]
  node_quiz["Quiz Game"]
  node_feed["Training Feed"]
  node_scanner["Vocabulary Scan"]
end

subgraph group_progress["Progress and Rewards"]
  node_history["Learning History"]
  node_quests["Daily Quests"]
  node_achievements["Achievements"]
  node_companion["Companion"]
  node_shop["Shop and Inventory<br/>[shop_page.dart]"]
end

subgraph group_platform["Data and Services"]
  node_database[("Local Database<br/>[app_db.dart]")]
  node_repositories["Domain Repositories"]
  node_backup["Backup<br/>[backup_page.dart]"]
  node_auth["Authentication<br/>[auth_service.dart]"]
  node_notifications["Alarm Service<br/>[alarm_service.dart]"]
end

node_learner(("Learner"))

node_learner -.->|"opens"| node_entry
node_entry -.->|"starts"| node_routing
node_routing -.->|"routes to"| node_home
node_home -.->|"opens"| node_vocab
node_home -.->|"opens"| node_units
node_units -.->|"starts"| node_learning
node_learning -.->|"offers"| node_flashcards
node_learning -.->|"offers"| node_quiz
node_home -.->|"opens"| node_feed
node_learner -.->|"scans words"| node_scanner
node_learning -.->|"records progress"| node_history
node_home -.->|"opens"| node_quests
node_home -.->|"opens"| node_achievements
node_home -.->|"opens"| node_companion
node_home -.->|"opens"| node_shop
node_vocab -.->|"uses"| node_repositories
node_learning -.->|"uses"| node_repositories
node_repositories -.->|"persists data"| node_database
node_learner -.->|"manages backup"| node_backup
node_learner -.->|"authenticates"| node_auth
node_quests -.->|"may schedule"| node_notifications

click node_entry "https://github.com/scrotjame/app_1/blob/master/lib/main.dart"
click node_routing "https://github.com/scrotjame/app_1/blob/master/lib/router/go_router_config.dart"
click node_home "https://github.com/scrotjame/app_1/blob/master/lib/page/home_page.dart"
click node_vocab "https://github.com/scrotjame/app_1/blob/master/lib/page/list_word/list_word_page.dart"
click node_units "https://github.com/scrotjame/app_1/blob/master/lib/page/list_unit/list_unit_page.dart"
click node_learning "https://github.com/scrotjame/app_1/blob/master/lib/page/learning/learning_page.dart"
click node_flashcards "https://github.com/scrotjame/app_1/blob/master/lib/page/learning/flash_card/flash_card_page.dart"
click node_quiz "https://github.com/scrotjame/app_1/blob/master/lib/page/learning/quiz_game/quiz_game_page.dart"
click node_feed "https://github.com/scrotjame/app_1/blob/master/lib/page/training_feed/training_feed_page.dart"
click node_scanner "https://github.com/scrotjame/app_1/blob/master/lib/page/scan_vocab/scan_vocab_page.dart"
click node_history "https://github.com/scrotjame/app_1/blob/master/lib/page/learning_history/learning_history_page.dart"
click node_quests "https://github.com/scrotjame/app_1/blob/master/lib/page/daily_quest/daily_quest_cubit.dart"
click node_achievements "https://github.com/scrotjame/app_1/blob/master/lib/page/achievement/achievement_page.dart"
click node_companion "https://github.com/scrotjame/app_1/blob/master/lib/page/companion/companion_page.dart"
click node_shop "https://github.com/scrotjame/app_1/blob/master/lib/page/shop/shop_page.dart"
click node_database "https://github.com/scrotjame/app_1/blob/master/lib/database/app_db.dart"
click node_repositories "https://github.com/scrotjame/app_1/tree/master/lib/repository"
click node_backup "https://github.com/scrotjame/app_1/blob/master/lib/page/backup/backup_page.dart"
click node_auth "https://github.com/scrotjame/app_1/blob/master/lib/service/auth_service.dart"
click node_notifications "https://github.com/scrotjame/app_1/blob/master/lib/service/alarm_service.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_entry,node_routing,node_home toneBlue
class node_vocab,node_units,node_learning,node_flashcards,node_quiz,node_feed,node_scanner toneAmber
class node_history,node_quests,node_achievements,node_companion,node_shop toneMint
class node_database,node_repositories,node_backup,node_auth,node_notifications toneRose
class node_learner toneIndigo
```

## Components

### App and Navigation

- [App Entry](https://github.com/scrotjame/app_1/blob/master/lib/main.dart): `lib/main.dart`
- [App Routing](https://github.com/scrotjame/app_1/blob/master/lib/router/go_router_config.dart): `lib/router/go_router_config.dart`
- [Home](https://github.com/scrotjame/app_1/blob/master/lib/page/home_page.dart): `lib/page/home_page.dart`

### Vocabulary Study

- [Vocabulary Lists](https://github.com/scrotjame/app_1/blob/master/lib/page/list_word/list_word_page.dart): `lib/page/list_word/list_word_page.dart`
- [Study Units](https://github.com/scrotjame/app_1/blob/master/lib/page/list_unit/list_unit_page.dart): `lib/page/list_unit/list_unit_page.dart`
- [Learning Session](https://github.com/scrotjame/app_1/blob/master/lib/page/learning/learning_page.dart): `lib/page/learning/learning_page.dart`
- [Flash Cards](https://github.com/scrotjame/app_1/blob/master/lib/page/learning/flash_card/flash_card_page.dart): `lib/page/learning/flash_card/flash_card_page.dart`
- [Quiz Game](https://github.com/scrotjame/app_1/blob/master/lib/page/learning/quiz_game/quiz_game_page.dart): `lib/page/learning/quiz_game/quiz_game_page.dart`
- [Training Feed](https://github.com/scrotjame/app_1/blob/master/lib/page/training_feed/training_feed_page.dart): `lib/page/training_feed/training_feed_page.dart`
- [Vocabulary Scan](https://github.com/scrotjame/app_1/blob/master/lib/page/scan_vocab/scan_vocab_page.dart): `lib/page/scan_vocab/scan_vocab_page.dart`

### Progress and Rewards

- [Learning History](https://github.com/scrotjame/app_1/blob/master/lib/page/learning_history/learning_history_page.dart): `lib/page/learning_history/learning_history_page.dart`
- [Daily Quests](https://github.com/scrotjame/app_1/blob/master/lib/page/daily_quest/daily_quest_cubit.dart): `lib/page/daily_quest/daily_quest_cubit.dart`
- [Achievements](https://github.com/scrotjame/app_1/blob/master/lib/page/achievement/achievement_page.dart): `lib/page/achievement/achievement_page.dart`
- [Companion](https://github.com/scrotjame/app_1/blob/master/lib/page/companion/companion_page.dart): `lib/page/companion/companion_page.dart`
- [Shop and Inventory](https://github.com/scrotjame/app_1/blob/master/lib/page/shop/shop_page.dart): `lib/page/shop/shop_page.dart`

### Data and Services

- [Local Database](https://github.com/scrotjame/app_1/blob/master/lib/database/app_db.dart): `lib/database/app_db.dart`
- [Domain Repositories](https://github.com/scrotjame/app_1/tree/master/lib/repository): `lib/repository`
- [Backup](https://github.com/scrotjame/app_1/blob/master/lib/page/backup/backup_page.dart): `lib/page/backup/backup_page.dart`
- [Authentication](https://github.com/scrotjame/app_1/blob/master/lib/service/auth_service.dart): `lib/service/auth_service.dart`
- [Alarm Service](https://github.com/scrotjame/app_1/blob/master/lib/service/alarm_service.dart): `lib/service/alarm_service.dart`

### Other components

- **Learner**

## Connections

- Learner → App Entry: opens
- App Entry → App Routing: starts
- App Routing → Home: routes to
- Home → Vocabulary Lists: opens
- Home → Study Units: opens
- Study Units → Learning Session: starts
- Learning Session → Flash Cards: offers
- Learning Session → Quiz Game: offers
- Home → Training Feed: opens
- Learner → Vocabulary Scan: scans words
- Learning Session → Learning History: records progress
- Home → Daily Quests: opens
- Home → Achievements: opens
- Home → Companion: opens
- Home → Shop and Inventory: opens
- Vocabulary Lists → Domain Repositories: uses
- Learning Session → Domain Repositories: uses
- Domain Repositories → Local Database: persists data
- Learner → Backup: manages backup
- Learner → Authentication: authenticates
- Daily Quests → Alarm Service: may schedule
