@@ -181,6 +181,345 @@ This application demonstrates:
1811814 . ** Dependency Injection** : Clean provision of dependencies to components
1821825 . ** SaveInstanceState** : Automatic state restoration across configuration changes
183183
184+ ### Component Architecture
185+
186+ ``` mermaid
187+ graph TD
188+ A[Application] --> B[RootComponent]
189+ B --> C[MainScreenComponent]
190+ B --> D[SettingsComponent]
191+ B --> E[StatisticsComponent]
192+
193+ C --> F[TaskListComponent]
194+ C --> G[TaskDetailsComponent]
195+ C --> H[TaskEditComponent]
196+
197+ F --> I[TaskItemComponent]
198+ G --> J[StatusToggleComponent]
199+ H --> K[PrioritySelectComponent]
200+ H --> L[DatePickerComponent]
201+
202+ style A fill:#f9f,stroke:#333,stroke-width:2px
203+ style B fill:#bbf,stroke:#333,stroke-width:2px
204+ style C fill:#dfd,stroke:#333,stroke-width:2px
205+ style D fill:#dfd,stroke:#333,stroke-width:2px
206+ style E fill:#dfd,stroke:#333,stroke-width:2px
207+ ```
208+
209+ ### Task Management Architecture
210+
211+ ``` mermaid
212+ graph TD
213+ A[TaskListComponent] -->|State| B[TaskListState]
214+ A -->|Events| C[TaskListIntent]
215+ C -->|Process| D[TaskListReducer]
216+ D -->|Update| B
217+
218+ A -->|Details Click| E[TaskDetailsComponent]
219+ A -->|Add Click| F[TaskEditComponent]
220+ E -->|Edit Click| F
221+
222+ F -->|Save| G[TaskRepository]
223+ E -->|Load| G
224+ A -->|Load All| G
225+
226+ G -->|Store| H[(Local Database)]
227+
228+ style A fill:#bbf,stroke:#333,stroke-width:2px
229+ style B fill:#dfd,stroke:#333,stroke-width:2px
230+ style G fill:#ffd,stroke:#333,stroke-width:2px
231+ style H fill:#fcc,stroke:#333,stroke-width:2px
232+ ```
233+
234+ ### Statistics Architecture
235+
236+ ``` mermaid
237+ graph TD
238+ A[StatisticsComponent] -->|State| B[StatisticsState]
239+ A -->|Events| C[StatisticsIntent]
240+ C -->|Process| D[StatisticsReducer]
241+ D -->|Update| B
242+
243+ A -->|Load Stats| E[StatisticsRepository]
244+ E -->|Query| F[TaskRepository]
245+ F -->|Read| G[(Local Database)]
246+
247+ E -->|Transform| H[StatsCalculator]
248+ H -->|Provide| I[ChartData]
249+ I -->|Display in| A
250+
251+ style A fill:#bbf,stroke:#333,stroke-width:2px
252+ style B fill:#dfd,stroke:#333,stroke-width:2px
253+ style E fill:#ffd,stroke:#333,stroke-width:2px
254+ style F fill:#ffd,stroke:#333,stroke-width:2px
255+ style G fill:#fcc,stroke:#333,stroke-width:2px
256+ ```
257+
258+ ### Navigation Flow
259+
260+ ``` mermaid
261+ stateDiagram-v2
262+ [*] --> TaskList
263+ TaskList --> TaskDetails: Select Task
264+ TaskDetails --> TaskEdit: Edit Button
265+ TaskList --> TaskEdit: Add Button
266+
267+ TaskEdit --> TaskList: Save/Cancel
268+ TaskDetails --> TaskList: Back Button
269+
270+ TaskList --> Statistics: Tab Navigation
271+ TaskList --> Settings: Tab Navigation
272+
273+ Statistics --> TaskList: Tab Navigation
274+ Settings --> TaskList: Tab Navigation
275+ ```
276+
277+ ### State Management
278+
279+ ``` mermaid
280+ flowchart LR
281+ A[User Interaction] -->|Intent| B[Reducer]
282+ B -->|New State| C[Component State]
283+ C -->|Renders UI| D[UI]
284+ D -->|Triggers| A
285+
286+ E[Decompose StateKeeper] <-->|Saves/Restores| C
287+ F[Background Process] -->|Updates| B
288+ ```
289+
290+ ### Clean Architecture Integration
291+
292+ ``` mermaid
293+ graph TD
294+ subgraph Presentation
295+ A[Jetpack Compose UI] -->|Observes| B[Decompose Component]
296+ B -->|Contains| C[Component State]
297+ B -->|Processes| D[Component Intent]
298+ end
299+
300+ subgraph Domain
301+ E[Use Cases]
302+ F[Domain Models]
303+ G[Repository Interfaces]
304+ end
305+
306+ subgraph Data
307+ H[Repository Implementations]
308+ I[Data Sources]
309+ J[Network/DB/Cache]
310+ end
311+
312+ B -->|Invokes| E
313+ E -->|Uses| F
314+ E -->|Calls| G
315+ G <--Implementation--> H
316+ H -->|Accesses| I
317+ I -->|Manages| J
318+
319+ style A fill:#dfd,stroke:#333,stroke-width:2px
320+ style B fill:#bbf,stroke:#333,stroke-width:2px
321+ style E fill:#ffd,stroke:#333,stroke-width:2px
322+ style H fill:#fcc,stroke:#333,stroke-width:2px
323+ ```
324+
325+ ### Component Lifecycle
326+
327+ ``` mermaid
328+ sequenceDiagram
329+ participant User
330+ participant Compose as Jetpack Compose
331+ participant Component as Decompose Component
332+ participant State as State Management
333+ participant Domain as Domain Layer
334+
335+ User->>Compose: Interaction
336+ Compose->>Component: Event
337+ Component->>State: Update State
338+ Component->>Domain: Execute Use Case
339+ Domain-->>Component: Result
340+ Component->>State: Update State
341+ State-->>Compose: State Change
342+ Compose-->>User: UI Update
343+
344+ Note over Component,State: Decompose handles lifecycle and state preservation during configuration changes
345+ ```
346+
347+ ### Task Workflow State Management
348+
349+ ``` mermaid
350+ stateDiagram-v2
351+ classDef todo fill:#ffcccb,stroke:#333,stroke-width:1px
352+ classDef inProgress fill:#ffffcc,stroke:#333,stroke-width:1px
353+ classDef done fill:#ccffcc,stroke:#333,stroke-width:1px
354+
355+ state "Task Created" as TC
356+ state "Todo State" as TODO
357+ state "In Progress State" as IP
358+ state "Done State" as DONE
359+
360+ [*] --> TC
361+ TC --> TODO : Initial Status
362+
363+ state TODO {
364+ [*] --> Idle
365+ Idle --> Starting : Start Task
366+ Starting --> [*] : Emit Intent.StartTask
367+ }
368+
369+ state IP {
370+ [*] --> Active
371+ Active --> Completing : Complete Task
372+ Active --> Abandoning : Back to Todo
373+ Completing --> [*] : Emit Intent.CompleteTask
374+ Abandoning --> [*] : Emit Intent.RevertToTodo
375+ }
376+
377+ state DONE {
378+ [*] --> Completed
379+ Completed --> Reopening : Reopen Task
380+ Reopening --> [*] : Emit Intent.ReopenTask
381+ }
382+
383+ TODO --> IP : Start Button Click
384+ IP --> DONE : Check Completed
385+ IP --> TODO : Revert Button Click
386+ DONE --> IP : Uncheck Completed
387+
388+ class TODO todo
389+ class IP inProgress
390+ class DONE done
391+ ```
392+
393+ ### Task Component Implementation Structure
394+
395+ ``` mermaid
396+ classDiagram
397+ class TaskComponent {
398+ <<interface>>
399+ +Value<Model> models
400+ +onTaskAction(TaskAction)
401+ }
402+
403+ class DefaultTaskComponent {
404+ -MutableValue<Model> _models
405+ -TaskRepository repository
406+ -CoroutineScope componentScope
407+ -StateKeeper stateKeeper
408+ +DefaultTaskComponent(componentContext, taskRepository)
409+ -initializeState()
410+ -saveState()
411+ -processAction(TaskAction)
412+ }
413+
414+ class Model {
415+ +TaskState state
416+ +List<Task> tasks
417+ +boolean isLoading
418+ +boolean hasError
419+ +String errorMessage
420+ }
421+
422+ class TaskState {
423+ <<enum>>
424+ TODO
425+ IN_PROGRESS
426+ DONE
427+ }
428+
429+ class TaskAction {
430+ <<sealed class>>
431+ }
432+
433+ class TaskAction.Start {
434+ +String taskId
435+ }
436+
437+ class TaskAction.Complete {
438+ +String taskId
439+ }
440+
441+ class TaskAction.Revert {
442+ +String taskId
443+ }
444+
445+ TaskComponent <|-- DefaultTaskComponent
446+ DefaultTaskComponent --> Model
447+ Model --> TaskState
448+ DefaultTaskComponent --> TaskAction
449+ TaskAction <|-- TaskAction.Start
450+ TaskAction <|-- TaskAction.Complete
451+ TaskAction <|-- TaskAction.Revert
452+ ```
453+
454+ ### Decompose Navigation Architecture
455+
456+ ``` mermaid
457+ graph TD
458+ subgraph "Root Component"
459+ NavHost[Navigation Host]
460+ Stack[Navigation Stack]
461+ Stack -->|Current| Child[Active Child Component]
462+ NavHost -->|Manages| Stack
463+ end
464+
465+ subgraph "Navigation Configuration"
466+ Config[Navigation Config]
467+ Registry[Component Registry]
468+ Factory[Component Factory]
469+ end
470+
471+ NavHost -->|Uses| Config
472+ Config -->|Defines| Registry
473+ Registry -->|Creates via| Factory
474+
475+ Child -->|Can Push| NewScreen[New Screen Component]
476+ NewScreen -->|Added to| Stack
477+ Child -->|Can Pop| Stack
478+
479+ style NavHost fill:#bbf,stroke:#333,stroke-width:2px
480+ style Stack fill:#dfd,stroke:#333,stroke-width:2px
481+ style Factory fill:#ffd,stroke:#333,stroke-width:2px
482+ ```
483+
484+ ### Child Slots Management
485+
486+ ``` mermaid
487+ graph LR
488+ subgraph "Parent Component"
489+ Parent[Parent Component]
490+
491+ subgraph "Child Slots"
492+ Slot1[Child Slot 1]
493+ Slot2[Child Slot 2]
494+ Slot3[Child Slot 3]
495+ end
496+
497+ Parent -->|Creates & Manages| Slot1
498+ Parent -->|Creates & Manages| Slot2
499+ Parent -->|Creates & Manages| Slot3
500+ end
501+
502+ subgraph "Compose UI"
503+ UI[Compose UI]
504+ slot1UI[Slot 1 UI]
505+ slot2UI[Slot 2 UI]
506+ slot3UI[Slot 3 UI]
507+ end
508+
509+ UI -->|Children| slot1UI
510+ UI -->|Children| slot2UI
511+ UI -->|Children| slot3UI
512+
513+ Slot1 -->|Renders| slot1UI
514+ Slot2 -->|Renders| slot2UI
515+ Slot3 -->|Renders| slot3UI
516+
517+ style Parent fill:#bbf,stroke:#333,stroke-width:2px
518+ style Slot1 fill:#dfd,stroke:#333,stroke-width:2px
519+ style Slot2 fill:#dfd,stroke:#333,stroke-width:2px
520+ style Slot3 fill:#dfd,stroke:#333,stroke-width:2px
521+ ```
522+
184523## 📚 Additional Resources
185524
186525- [ Decompose Documentation] ( https://arkivanov.github.io/Decompose/ )
0 commit comments