Android App·

Decompose Todo App

How I built yet another Todo app (yes, really) to master Decompose - a powerful reactive component architecture library for Kotlin that makes state management, navigation, and lifecycle handling surprisingly enjoyable.
Mobile App
Decompose Todo App

Tech Stack:

KotlinJetpack ComposeDecomposeKoin

Key Features:

  • Component-Based Architecture
  • State Management
  • Multi-Stack Navigation
  • Task Workflow Management
  • Clean Architecture
  • Dark/Light Theme Support
  • Package-by-Feature Organization

Yes, I Built Another Todo App (But Hear Me Out!)

Let's address the elephant in the room: I built a Todo app. The most clichéd project in developer history, the "Hello World" of app development. But this one's different – I swear!

When I decided to learn Decompose, the hot new architecture library in the Kotlin world, I needed something simple enough to focus on the architecture, not the business logic. A Todo app was perfect – familiar enough that I wouldn't get distracted by domain complexities, yet practical enough to showcase real architecture patterns.

What started as a "let me just implement the basics" experiment quickly snowballed into a full-featured Todo app with task workflows, priorities, dark mode, and statistics. I may have gone a little overboard, but that's how we learn, right? Besides, reading documentation is like eating vegetables – necessary but not exactly thrilling. I'd rather build something.

01_main_todo_list
10_todo_tasks
11_in_progress_view

The Magic of Component-Based Architecture

The real game-changer with Decompose is how it transforms navigation and state management. Traditional Android navigation is a fragmented mess of Activities, Fragments, and confusing back-stack behaviors. Decompose replaces all that with a clean, type-safe component system.

Each screen in my app is a standalone component with its own lifecycle, state, and logic. The Todo list is a component. The task editor is a component. The statistics screen is a component. They all communicate through clearly defined interfaces, making the app incredibly modular and testable. The best part? State preservation during screen rotations just works. No more crashes or lost data when users flip their phones.

Multi-stack navigation – that nightmare scenario where each tab needs its own back stack – becomes almost trivial. I implemented a bottom-navigation pattern where Tasks, Statistics, and Settings each maintain separate navigation states, and the back button intelligently works with the current tab. What would have been hundreds of lines of buggy navigation code in traditional Android is now just a few dozen lines of clean, predictable logic.

08_task_details
07_create_task
04_statistics_overview

The "Aha!" Moments and Lessons Learned

Every new technology journey has its epiphanies and facepalms. My first "aha!" moment came when I realized configuration changes had become completely irrelevant – my app's state just... stayed there, magically preserved across screen rotations. After years of fighting Android's lifecycle quirks, this felt revolutionary.

Of course, I made plenty of mistakes too. I spent hours debugging why my component wasn't receiving updates, only to realize I'd forgotten to actually observe the state in the UI. Classic. And let's not talk about the time I over-engineered a simple list screen with six different components before realizing two would have sufficed. Architecture enthusiasm is a real condition, and I definitely had a severe case.

The biggest lesson? Component-based thinking fundamentally changes how you build apps. Breaking features into independent components with clear responsibilities makes everything more maintainable. The unidirectional data flow eliminates entire categories of bugs. And having truly modular code means I can reuse these patterns in future projects. Does the world need another Todo app? Probably not. But I needed to build one to truly understand Decompose, and now I have a solid reference architecture for building much more complex apps in the future.

05_settings_light_mode
06_settings_dark_mode
02_in_progress_tasks

The full source code is available on GitHub if you want to explore how I implemented each feature. Feel free to use it as a reference for your own Decompose adventures!

Created by Abdelraouf Sabri, a senior Android developer who believes the best way to learn is to build, even if it means adding to the world's surplus of Todo apps.