A modern, feature-rich Todo application built with Jetpack Compose and Material Design 3. This app showcases advanced Android development techniques including drag-and-drop reordering, category management, and a clean MVVM architecture.
- Create & Manage Tasks - Add, edit, complete, and delete todo items
- Category Organization - Organize tasks with 5 built-in categories (Personal, Work, Shopping, Health, Other)
- Smart Filtering - Filter tasks by category with intuitive filter chips
- Drag & Drop Reordering - Smooth, animation-free task reordering
- Persistent Storage - Local data storage with Room database
- Enhanced Checkbox Interaction - Direct click handling with immediate feedback
- Clickable Category Icons - Tap category icons to change task categories
- Click-to-Edit Text - Tap task text to edit content inline
- Swipe Gestures - Quick actions with swipe gestures
- Material Design 3 - Modern UI with dynamic theming
- Zero Animation Drag & Drop - Smooth reordering without visual artifacts or flash screens
- MVVM Architecture - Clean separation of concerns with reactive UI
- Jetpack Compose - Modern declarative UI framework
- Hilt Dependency Injection - Efficient dependency management
- Room Database - Robust local data persistence
- Comprehensive Testing - Unit tests for core functionality
Add your app screenshots here
This app follows MVVM (Model-View-ViewModel) architecture pattern with the following components:
๐ฆ com.canme.todo
โโโ ๐ data/
โ โโโ Todo.kt # Data model
โ โโโ TodoCategory.kt # Category enum
โ โโโ TodoDao.kt # Database access object
โ โโโ TodoDatabase.kt # Room database
โ โโโ TodoRepository.kt # Data repository
โโโ ๐ di/
โ โโโ DatabaseModule.kt # Hilt dependency injection
โโโ ๐ ui/
โ โโโ ๐ components/ # Reusable UI components
โ โ โโโ AddTodoDialog.kt
โ โ โโโ CategoryFilterChips.kt
โ โ โโโ DraggableList.kt # Custom drag & drop implementation
โ โ โโโ EmptyState.kt
โ โ โโโ TodoItem.kt
โ โโโ ๐ screens/
โ โ โโโ TodoListScreen.kt # Main screen
โ โโโ ๐ theme/
โ โ โโโ Color.kt
โ โ โโโ Theme.kt
โ โ โโโ Type.kt
โ โโโ TodoViewModel.kt # ViewModel with business logic
โโโ MainActivity.kt # Entry point
- Kotlin - Primary programming language
- Jetpack Compose - Modern UI toolkit
- Material Design 3 - Design system and components
- Coroutines - Asynchronous programming
- ViewModel - UI-related data holder
- LiveData/StateFlow - Observable data holder
- Room - SQLite abstraction layer
- Hilt - Dependency injection
- Android Studio - IDE
- Gradle - Build system
- KSP - Kotlin Symbol Processing
- R8 - Code shrinking and obfuscation
- Android 7.0 (API level 24) or higher
- Kotlin 1.9.10 or higher
- Android Studio Hedgehog or higher
- Install Android Studio
- Set up Android SDK (API 24+)
- Enable USB debugging on your device (optional)
-
Clone the repository
git clone https://github.com/yourusername/apk_TodoList.git cd apk_TodoList -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing project"
- Navigate to the cloned directory
-
Build and Run
# Build debug APK ./gradlew assembleDebug # Build release APK ./gradlew assembleRelease # Install on connected device ./gradlew installDebug
Download the latest release APK from the Releases section.
Latest Version: v1.0.2
- Size: 2.94 MB
- Min SDK: Android 7.0 (API 24)
- Target SDK: Android 14 (API 34)
- Add a Task: Tap the floating action button (+) to create a new task
- Complete a Task: Tap the checkbox to mark as complete/incomplete
- Edit a Task: Tap on the task text to edit
- Change Category: Tap the category icon to select a different category
- Delete a Task: Long press on a task to delete
- Reorder Tasks: Long press and drag the handle icon to reorder
- Filter by Category: Use the filter chips at the top to show specific categories
- Drag & Drop: Reorder tasks by dragging them to new positions
- Swipe Actions: Swipe tasks for quick actions (if enabled)
Run the test suite:
# Run unit tests
./gradlew test
# Run instrumented tests
./gradlew connectedAndroidTest
# Run all tests
./gradlew check- Debug: Development build with debugging enabled
- Release: Production build with R8 optimization
You can customize the app by modifying:
- Colors:
ui/theme/Color.kt - Typography:
ui/theme/Type.kt - Categories:
data/TodoCategory.kt
- R8 Code Shrinking: Reduces APK size by ~30%
- Resource Shrinking: Removes unused resources
- Proguard Rules: Optimizes code for release builds
- Efficient Drag & Drop: Zero-animation implementation for smooth performance
- APK Size: 2.94 MB (release)
- Cold Start Time: < 1 second
- Memory Usage: < 50 MB average
- 60 FPS: Smooth animations and interactions
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Kotlin coding conventions
- Write unit tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
- Material Design 3 - For the beautiful design system
- Jetpack Compose - For the modern UI framework
- Android Community - For continuous inspiration and support
- Developer: [Your Name]
- Email: your.email@example.com
- GitHub: @yourusername
- LinkedIn: Your LinkedIn
- โ Enhanced drag-and-drop with zero animations
- โ Improved category icon interactions
- โ Click-to-edit text functionality
- โ Enhanced checkbox interactions
- โ Performance optimizations
- โ Basic todo functionality
- โ Category management
- โ Material Design 3 implementation
- โ Room database integration
- ๐ Initial release
- โ Core todo features
- โ MVVM architecture
- โ Jetpack Compose UI
โญ Star this repository if you found it helpful!
Made with โค๏ธ using Jetpack Compose