Skip to content

babatezpur/ToDoApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

28 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฑ Modern Todo App

A feature-rich, native Android todo application built with Kotlin and Room Database, following clean architecture principles and modern Android development practices.

๐ŸŽฏ Features

๐Ÿ“‹ Core Functionality

  • โœ… Create, Edit, Delete todos with comprehensive form validation
  • ๐ŸŽฏ Priority levels (High/Medium/Low) with color-coded visual indicators
  • ๐Ÿ“… Due date & time management with date/time pickers
  • ๐Ÿ”” Smart reminders with notification scheduling using AlarmManager
  • โœ๏ธ Rich text descriptions with multi-line support

๐Ÿ” Advanced Search & Filtering

  • ๐Ÿ”Ž Real-time search across todo titles with instant results
  • ๐Ÿ“Š Multiple sorting options:
    • Newest First (default)
    • Priority-based sorting
    • Due date sorting (earliest/latest)
  • ๐ŸŽ›๏ธ Intuitive toolbar controls with search bar integration

โš ๏ธ Smart Overdue Detection

  • ๐Ÿšจ Visual indicators for overdue tasks with warning icons
  • ๐Ÿ“Š Dynamic date formatting showing days overdue
  • ๐ŸŽจ Color-coded urgency (red text for overdue items)

โœ… Completed Todos Management

  • ๐Ÿ“œ Dedicated completed todos view with distinct styling
  • ๐ŸŽฌ Smooth slide animations when marking todos as incomplete
  • ๐ŸŽจ Visual differentiation (strikethrough text, muted colors, transparency)
  • โ†ฉ๏ธ One-tap reactivation to move todos back to active list

โš™๏ธ Settings & Data Management

  • ๐Ÿ“Š App statistics (total, active, completed todos, completion rate)
  • ๐Ÿ—‘๏ธ Bulk operations:
    • Clear all todos
    • Clear completed todos only
    • Clear all scheduled reminders
  • ๐Ÿ“‹ Comprehensive app information

๐Ÿ—๏ธ Technical Architecture

MVVM Architecture Pattern

UI Layer (Activities/Fragments)
    โ†“
ViewModel Layer (State Management)
    โ†“
Domain Layer (Business Logic)
    โ†“
Repository Layer (Data Abstraction)
    โ†“
Data Layer (Room Database)

Technology Stack

  • Language: Kotlin 100%
  • Database: Room Persistence Library
  • Architecture: MVVM with LiveData/StateFlow
  • UI: Material Design 3 components
  • Async: Coroutines + Flow for reactive programming
  • DI: Manual dependency injection (ViewModelFactory pattern)
  • Notifications: AlarmManager + NotificationManager

Key Technical Decisions

Reactive Data Flow

Room Database โ†’ Flow<List<Todo>> โ†’ ViewModel โ†’ StateFlow โ†’ UI Updates
  • Real-time UI updates using Kotlin Flows
  • Automatic data synchronization across screens
  • No manual refresh needed

State Management

data class TodoViewUiState(
    val isLoading: Boolean = false,
    val todos: List<Todo> = emptyList(),
    val searchQuery: String = "",
    val isSearchActive: Boolean = false,
    val currentSortOption: SortOption = SortOption.CREATED_DESC
)

Database Schema

@Entity(tableName = "todos")
data class Todo(
    @PrimaryKey(autoGenerate = true)
    var id: Long = 0L,
    val title: String,
    val description: String,
    val priority: Priority,
    val dueDate: LocalDateTime,
    val reminderDateTime: LocalDateTime? = null,
    val isCompleted: Boolean = false
)

๐Ÿ“ธ Screenshots

Main Screen Completed Todos Add Todo Sort Options
Main Completed Add Sort

The app features a clean, Material Design interface with intuitive navigation and visual feedback

๐ŸŽจ UI/UX Highlights

Material Design Implementation

  • ๐ŸŽจ Consistent color scheme with priority-based card backgrounds
  • ๐Ÿ“ฑ Responsive layouts using ConstraintLayout and CardView
  • โœจ Smooth animations for state transitions and user interactions
  • ๐Ÿ”„ Loading states with progress indicators

User Experience Features

  • ๐ŸŽฏ One-handed usage with bottom-positioned FAB
  • โšก Instant feedback with toast messages and visual confirmations
  • ๐Ÿ”’ Confirmation dialogs for destructive actions
  • ๐Ÿ“ฑ Proper keyboard handling in search mode

๐Ÿ”ง Advanced Features

Smart Reminder System

  • โฐ Precise timing using AlarmManager for exact notifications
  • ๐Ÿ”” Permission handling for Android 13+ notification permissions
  • ๐ŸŽฏ Automatic cancellation when todos are completed or deleted

Search Implementation

  • ๐Ÿ” Database-level filtering using Room SQL queries
  • โšก Debounced input to prevent excessive database calls
  • ๐ŸŽ›๏ธ Clean state management with search activation/deactivation

Data Persistence

  • ๐Ÿ’พ Robust error handling with Result wrapper pattern
  • ๐Ÿ”„ Automatic data validation at multiple layers
  • ๐Ÿ“Š Efficient queries with proper indexing

๐Ÿš€ Getting Started

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK 24+ (Android 7.0)
  • Kotlin 1.8+

Installation

# Clone the repository
git clone https://github.com/yourusername/todo-app.git

# Open in Android Studio
cd todo-app
# File -> Open -> Select project folder

# Build and run
./gradlew assembleDebug

Key Dependencies

// Room Database
implementation "androidx.room:room-runtime:2.5.0"
implementation "androidx.room:room-ktx:2.5.0"

// Coroutines & Flow
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"

// Lifecycle & ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.7.0"

// Material Design
implementation "com.google.android.material:material:1.9.0"

๐Ÿ”ฎ Future Enhancements

  • ๐Ÿ“Š Data Export/Import (CSV, JSON)
  • ๐ŸŒ™ Dark Mode support
  • ๐Ÿ“ฑ Widget for home screen
  • ๐Ÿ”„ Cloud Sync with Firebase
  • ๐Ÿ“ˆ Analytics and productivity insights
  • ๐ŸŽจ Custom themes and color schemes

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘จโ€๐Ÿ’ป Developer

Saptarshi Das


Built with โค๏ธ using modern Android development practices

About

My Todo App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages