# congminh204/personalapp architecture

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

- Interactive diagram: https://gitdiagram.com/congminh204/personalapp
- Repository: https://github.com/congminh204/personalapp

## Overview

Việc của tôi is a Vietnamese personal todo, habit, and focus-tracking Flutter app. Users navigate its five-tab shell to manage tasks and habits, plan by calendar, run focus sessions, and review statistics or history; search and settings provide supporting workflows. README documents repository-backed features and platform-specific SQLite/Fake selection. The sampled source is primarily native runner boilerplate, so app-level relationships below rely on README statements rather than inspected Dart calls.

Main entry points: [`lib/data/repositories`](https://github.com/congminh204/personalapp/tree/main/lib/data/repositories) (Repositories), [`lib/screens/home_shell.dart`](https://github.com/congminh204/personalapp/blob/main/lib/screens/home_shell.dart) (App shell), [`lib/features/today/today_screen.dart`](https://github.com/congminh204/personalapp/blob/main/lib/features/today/today_screen.dart) (Today tasks), [`lib/features/calendar/calendar_screen.dart`](https://github.com/congminh204/personalapp/blob/main/lib/features/calendar/calendar_screen.dart) (Calendar)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_shell["App shell<br/>[home_shell.dart]"]
  node_routes["Screen routes<br/>[routes.dart]"]
  node_settings["Settings and tags"]
end

subgraph group_work["Tasks and planning"]
  node_today["Today tasks<br/>[today_screen.dart]"]
  node_calendar["Calendar"]
  node_task_editor["Task editor"]
  node_task_detail["Task details"]
  node_task_actions["Task actions<br/>[task_actions.dart]"]
  node_search["Task search<br/>[search_screen.dart]"]
end

subgraph group_focus["Focus and insights"]
  node_timer["Focus timer<br/>[timer_screen.dart]"]
  node_timer_controller["Timer controller"]
  node_focus_history["Focus history"]
  node_stats["Statistics<br/>[stats_screen.dart]"]
end

subgraph group_habits["Habit tracking"]
  node_habits["Habits<br/>[habits_screen.dart]"]
  node_habit_detail["Habit details"]
  node_habit_editor["Habit editor"]
end

subgraph group_data["Data and preferences"]
  node_dependencies["Storage selection<br/>[dependencies.dart]"]
  node_repositories["Repositories"]
  node_sqlite[("SQLite database<br/>[app_database.dart]")]
  node_fake[("In-memory data<br/>[fake_store.dart]")]
  node_models["Domain models"]
  node_settings_controller["Settings state"]
end

node_user(("User"))

node_user -->|"opens app"| node_shell
node_shell -->|"shows tab"| node_today
node_shell -->|"shows tab"| node_calendar
node_shell -->|"shows tab"| node_timer
node_shell -->|"shows tab"| node_stats
node_shell -->|"shows tab"| node_habits
node_today -->|"opens form"| node_task_editor
node_today -->|"opens details"| node_task_detail
node_calendar -->|"opens form"| node_task_editor
node_calendar -->|"opens details"| node_task_detail
node_task_detail -->|"starts or deletes"| node_task_actions
node_task_editor -->|"saves task"| node_task_actions
node_today -->|"reads and writes"| node_repositories
node_calendar -->|"reads tasks"| node_repositories
node_task_actions -->|"updates tasks"| node_repositories
node_search -->|"searches tasks"| node_repositories
node_timer -->|"controls timer"| node_timer_controller
node_timer_controller -->|"saves sessions"| node_repositories
node_task_detail -->|"reads focus time"| node_repositories
node_focus_history -->|"reads sessions"| node_repositories
node_stats -->|"reads activity"| node_repositories
node_habits -->|"opens details"| node_habit_detail
node_habits -->|"opens editor"| node_habit_editor
node_habit_detail -->|"reads habit logs"| node_repositories
node_habit_editor -->|"saves habits"| node_repositories
node_settings -->|"updates preferences"| node_settings_controller
node_settings -->|"manages tags"| node_repositories
node_dependencies -->|"provides access"| node_repositories
node_dependencies -->|"selects SQLite"| node_sqlite
node_dependencies -->|"selects Fake"| node_fake
node_repositories -->|"shares data types"| node_models
node_repositories -->|"SQLite implementation"| node_sqlite
node_repositories -->|"memory implementation"| node_fake

click node_shell "https://github.com/congminh204/personalapp/blob/main/lib/screens/home_shell.dart"
click node_routes "https://github.com/congminh204/personalapp/blob/main/lib/app/routes.dart"
click node_today "https://github.com/congminh204/personalapp/blob/main/lib/features/today/today_screen.dart"
click node_calendar "https://github.com/congminh204/personalapp/blob/main/lib/features/calendar/calendar_screen.dart"
click node_task_editor "https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_edit_screen.dart"
click node_task_detail "https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_detail_screen.dart"
click node_task_actions "https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_actions.dart"
click node_search "https://github.com/congminh204/personalapp/blob/main/lib/features/search/search_screen.dart"
click node_timer "https://github.com/congminh204/personalapp/blob/main/lib/features/timer/timer_screen.dart"
click node_timer_controller "https://github.com/congminh204/personalapp/blob/main/lib/features/timer/timer_controller.dart"
click node_focus_history "https://github.com/congminh204/personalapp/blob/main/lib/features/focus_history/focus_history_screen.dart"
click node_stats "https://github.com/congminh204/personalapp/blob/main/lib/features/stats/stats_screen.dart"
click node_habits "https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habits_screen.dart"
click node_habit_detail "https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habit_detail_screen.dart"
click node_habit_editor "https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habit_edit_screen.dart"
click node_settings "https://github.com/congminh204/personalapp/blob/main/lib/features/settings/settings_screen.dart"
click node_dependencies "https://github.com/congminh204/personalapp/blob/main/lib/app/dependencies.dart"
click node_repositories "https://github.com/congminh204/personalapp/tree/main/lib/data/repositories"
click node_sqlite "https://github.com/congminh204/personalapp/blob/main/lib/data/sqlite/app_database.dart"
click node_fake "https://github.com/congminh204/personalapp/blob/main/lib/data/fake/fake_store.dart"
click node_models "https://github.com/congminh204/personalapp/tree/main/lib/data/models"
click node_settings_controller "https://github.com/congminh204/personalapp/blob/main/lib/app/settings_controller.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_shell,node_routes,node_settings,node_user toneBlue
class node_today,node_calendar,node_task_editor,node_task_detail,node_task_actions,node_search toneAmber
class node_timer,node_timer_controller,node_focus_history,node_stats toneMint
class node_habits,node_habit_detail,node_habit_editor toneRose
class node_dependencies,node_repositories,node_sqlite,node_fake,node_models,node_settings_controller toneIndigo
```

## Components

### App shell

- [App shell](https://github.com/congminh204/personalapp/blob/main/lib/screens/home_shell.dart): `lib/screens/home_shell.dart`
- [Screen routes](https://github.com/congminh204/personalapp/blob/main/lib/app/routes.dart): `lib/app/routes.dart`
- [Settings and tags](https://github.com/congminh204/personalapp/blob/main/lib/features/settings/settings_screen.dart): `lib/features/settings/settings_screen.dart`

### Tasks and planning

- [Today tasks](https://github.com/congminh204/personalapp/blob/main/lib/features/today/today_screen.dart): `lib/features/today/today_screen.dart`
- [Calendar](https://github.com/congminh204/personalapp/blob/main/lib/features/calendar/calendar_screen.dart): `lib/features/calendar/calendar_screen.dart`
- [Task editor](https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_edit_screen.dart): `lib/features/tasks/task_edit_screen.dart`
- [Task details](https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_detail_screen.dart): `lib/features/tasks/task_detail_screen.dart`
- [Task actions](https://github.com/congminh204/personalapp/blob/main/lib/features/tasks/task_actions.dart): `lib/features/tasks/task_actions.dart`
- [Task search](https://github.com/congminh204/personalapp/blob/main/lib/features/search/search_screen.dart): `lib/features/search/search_screen.dart`

### Focus and insights

- [Focus timer](https://github.com/congminh204/personalapp/blob/main/lib/features/timer/timer_screen.dart): `lib/features/timer/timer_screen.dart`
- [Timer controller](https://github.com/congminh204/personalapp/blob/main/lib/features/timer/timer_controller.dart): `lib/features/timer/timer_controller.dart`
- [Focus history](https://github.com/congminh204/personalapp/blob/main/lib/features/focus_history/focus_history_screen.dart): `lib/features/focus_history/focus_history_screen.dart`
- [Statistics](https://github.com/congminh204/personalapp/blob/main/lib/features/stats/stats_screen.dart): `lib/features/stats/stats_screen.dart`

### Habit tracking

- [Habits](https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habits_screen.dart): `lib/features/habits/habits_screen.dart`
- [Habit details](https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habit_detail_screen.dart): `lib/features/habits/habit_detail_screen.dart`
- [Habit editor](https://github.com/congminh204/personalapp/blob/main/lib/features/habits/habit_edit_screen.dart): `lib/features/habits/habit_edit_screen.dart`

### Data and preferences

- [Storage selection](https://github.com/congminh204/personalapp/blob/main/lib/app/dependencies.dart): `lib/app/dependencies.dart`
- [Repositories](https://github.com/congminh204/personalapp/tree/main/lib/data/repositories): `lib/data/repositories`
- [SQLite database](https://github.com/congminh204/personalapp/blob/main/lib/data/sqlite/app_database.dart): `lib/data/sqlite/app_database.dart`
- [In-memory data](https://github.com/congminh204/personalapp/blob/main/lib/data/fake/fake_store.dart): `lib/data/fake/fake_store.dart`
- [Domain models](https://github.com/congminh204/personalapp/tree/main/lib/data/models): `lib/data/models`
- [Settings state](https://github.com/congminh204/personalapp/blob/main/lib/app/settings_controller.dart): `lib/app/settings_controller.dart`

### Other components

- **User**

## Connections

- User → App shell: opens app (evidence: `README.md`)
- App shell → Today tasks: shows tab (evidence: `README.md`)
- App shell → Calendar: shows tab (evidence: `README.md`)
- App shell → Focus timer: shows tab (evidence: `README.md`)
- App shell → Statistics: shows tab (evidence: `README.md`)
- App shell → Habits: shows tab (evidence: `README.md`)
- Today tasks → Task editor: opens form (evidence: `README.md`)
- Today tasks → Task details: opens details (evidence: `README.md`)
- Calendar → Task editor: opens form (evidence: `README.md`)
- Calendar → Task details: opens details (evidence: `README.md`)
- Task details → Task actions: starts or deletes (evidence: `README.md`)
- Task editor → Task actions: saves task (evidence: `README.md`)
- Today tasks → Repositories: reads and writes (evidence: `README.md`)
- Calendar → Repositories: reads tasks (evidence: `README.md`)
- Task actions → Repositories: updates tasks (evidence: `README.md`)
- Task search → Repositories: searches tasks (evidence: `README.md`)
- Focus timer → Timer controller: controls timer (evidence: `README.md`)
- Timer controller → Repositories: saves sessions (evidence: `README.md`)
- Task details → Repositories: reads focus time (evidence: `README.md`)
- Focus history → Repositories: reads sessions (evidence: `README.md`)
- Statistics → Repositories: reads activity (evidence: `README.md`)
- Habits → Habit details: opens details (evidence: `README.md`)
- Habits → Habit editor: opens editor (evidence: `README.md`)
- Habit details → Repositories: reads habit logs (evidence: `README.md`)
- Habit editor → Repositories: saves habits (evidence: `README.md`)
- Settings and tags → Settings state: updates preferences (evidence: `README.md`)
- Settings and tags → Repositories: manages tags (evidence: `README.md`)
- Storage selection → Repositories: provides access (evidence: `README.md`)
- Storage selection → SQLite database: selects SQLite (evidence: `README.md`)
- Storage selection → In-memory data: selects Fake (evidence: `README.md`)
- Repositories → Domain models: shares data types (evidence: `README.md`)
- Repositories → SQLite database: SQLite implementation (evidence: `README.md`)
- Repositories → In-memory data: memory implementation (evidence: `README.md`)
