Decompose helps you build applications that are organized, focused, not overwhelming, and enjoyable to develop.
A comprehensive tutorial project showcasing Decompose for building reactive, component-based architectures in Kotlin Android development. This project demonstrates how to create modular, maintainable, and testable applications with proper separation of concerns.
This Todo app demonstrates Decompose's capabilities to manage component lifecycles, state, and navigation in a clean, predictable way. It follows reactive programming principles and showcases proper separation of concerns.
The app allows users to:
- Create and manage tasks with different priorities
- Track task progress through multiple states
- View statistics about task completion
- Customize the app appearance
- Component-Based Architecture: Independent UI components with their own lifecycle
- Predictable State Management: Immutable state and unidirectional data flow
- Type-Safe Navigation: No more fragment transactions or intent flags
- Multi-Module Support: Clean separation between features and layers
- Composable-Friendly Design: Natural integration with Jetpack Compose
- Workflow Management: Task state progression from Todo β In Progress β Done
The app demonstrates a clear task progression workflow with different states:
The app provides smart workflow features:
- Contextual tips for better productivity
- Visual indicators for task status
- Priority levels shown with color coding
- Deadline tracking for time-sensitive tasks
![]() |
![]() |
Create New Tasks Add titles, descriptions, tags, deadlines, and priorities |
Task Details View complete information and manage task status |
![]() |
![]() |
Productivity Stats Track completion rates and task distribution |
App Settings Customize theme and app preferences |
This application demonstrates Decompose's powerful capabilities for component-based architecture:
graph TD
A[Application] --> B[RootComponent]
B --> C[TodoListComponent]
B --> D[StatisticsComponent]
B --> E[SettingsComponent]
C --> F[TaskItemComponent]
C --> G[TaskEditorComponent]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style C fill:#dfd,stroke:#333,stroke-width:2px
style D fill:#dfd,stroke:#333,stroke-width:2px
style E fill:#dfd,stroke:#333,stroke-width:2px
stateDiagram-v2
classDef todo fill:#ffcccb,stroke:#333,stroke-width:1px
classDef inProgress fill:#ffffcc,stroke:#333,stroke-width:1px
classDef done fill:#ccffcc,stroke:#333,stroke-width:1px
[*] --> TODO : New Task
TODO --> IN_PROGRESS : Start Task
IN_PROGRESS --> DONE : Complete Task
IN_PROGRESS --> TODO : Return to Todo
DONE --> IN_PROGRESS : Reopen Task
class TODO todo
class IN_PROGRESS inProgress
class DONE done
graph TD
subgraph Presentation
A[Jetpack Compose UI] -->|Observes| B[Decompose Component]
B -->|Contains| C[Component State]
end
subgraph Domain
E[Use Cases]
F[Domain Models]
G[Repository Interfaces]
end
subgraph Data
H[Repository Implementations]
I[Data Sources]
end
B -->|Invokes| E
E -->|Uses| F
E -->|Calls| G
G <--Implementation--> H
H -->|Accesses| I
style A fill:#dfd,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style E fill:#ffd,stroke:#333,stroke-width:2px
style H fill:#fcc,stroke:#333,stroke-width:2px
- Clone the repository
- Open in Android Studio Iguana or later
- Build and run on your device or emulator
This project is licensed under the MIT License - see the LICENSE file for details.