A powerful productivity application built with Kotlin and Jetpack Compose
Task Manager is a comprehensive productivity application designed to help users organize their daily tasks, set reminders, and track their progress. Built using modern Android development practices with Jetpack Compose and Clean Architecture, the app provides an intuitive and efficient task management experience with cloud synchronization capabilities.
- Clean Architecture with MVVM pattern for maintainable code
- Jetpack Compose for modern declarative UI
- Cloud Sync with RESTful API integration
- Smart Notifications with WorkManager scheduling
- Offline-First approach with Room Database
- Material Design 3 following latest guidelines
- Create, edit, and delete tasks with ease
- Set task priorities (High, Medium, Low)
- Add detailed descriptions and notes
- Attach tags and labels for organization
- Mark tasks as complete with satisfaction animations
- Archive completed tasks
- Search and filter tasks by multiple criteria
- Schedule task reminders with flexible timing
- Recurring task support (daily, weekly, monthly)
- Smart notification system using Firebase Cloud Messaging
- Snooze functionality for reminders
- Custom notification sounds and vibration patterns
- Notification channels for better control
- Create custom categories for different projects
- Color-code categories for visual organization
- Nested subcategories support
- Drag-and-drop task reordering
- Quick task entry with shortcuts
- Batch operations for multiple tasks
- Real-time sync across devices using RESTful APIs
- Offline mode with automatic sync when online
- Conflict resolution for concurrent edits
- Data backup to cloud storage
- Cross-device task sharing
- Daily, weekly, and monthly task completion statistics
- Productivity charts and graphs
- Time tracking for tasks
- Goal setting and progress tracking
- Streak tracking for daily completions
- Export productivity reports
- Smooth Material Design 3 animations
- Dark mode with system theme detection
- Customizable app themes and accent colors
- Widget support for home screen quick access
- Gesture controls for common actions
- Adaptive layouts for tablets
- Language: Kotlin 1.9+
- UI Framework: Jetpack Compose
- Architecture: Clean Architecture + MVVM
- Minimum SDK: 24 (Android 7.0)
- Target SDK: 34 (Android 14)
- Room Database - Local data persistence
- ViewModel - UI state management
- LiveData & Flow - Reactive data observation
- Navigation Component - Type-safe Compose navigation
- DataStore - Preference management
- WorkManager - Background task scheduling for reminders
- Paging 3 - Efficient data loading for large lists
- Retrofit - RESTful API client
- OkHttp - HTTP client with interceptors
- Gson - JSON serialization/deserialization
- Coroutines - Asynchronous network calls
- Hilt - Compile-time dependency injection framework
- WorkManager - Scheduled notifications and sync
- Kotlin Coroutines - Asynchronous operations
- Flow - Reactive streams
- Firebase Cloud Messaging (FCM) - Push notifications
- Firebase Analytics - User behavior tracking
- Firebase Crashlytics - Crash reporting
- Material Design 3 Components - Modern UI elements
- Accompanist - Additional Compose utilities
- Lottie - Vector animations
- Coil - Image loading
- JUnit 5 - Unit testing
- MockK - Kotlin-friendly mocking
- Turbine - Flow testing
- Espresso - UI testing
- Robolectric - Android unit tests without emulator
The application follows Clean Architecture with clear separation of concerns:
app/
├── data/
│ ├── local/
│ │ ├── dao/ # Room DAOs
│ │ ├── entities/ # Database entities
│ │ └── database/ # Database configuration
│ ├── remote/
│ │ ├── api/ # Retrofit API interfaces
│ │ ├── dto/ # Data transfer objects
│ │ └── interceptors/ # Network interceptors
│ ├── repository/ # Repository implementations
│ └── mapper/ # Data mappers
│
├── domain/
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Business logic use cases
│
├── presentation/
│ ├── ui/
│ │ ├── screens/ # Screen composables
│ │ │ ├── home/
│ │ │ ├── task/
│ │ │ ├── category/
│ │ │ └── settings/
│ │ ├── components/ # Reusable UI components
│ │ └── theme/ # Material theming
│ ├── viewmodel/ # Screen ViewModels
│ ├── navigation/ # Navigation setup
│ └── util/ # UI utilities
│
├── di/ # Dependency injection modules
│ ├── AppModule.kt
│ ├── DatabaseModule.kt
│ ├── NetworkModule.kt
│ └── RepositoryModule.kt
│
└── worker/ # WorkManager workers
├── SyncWorker.kt
└── ReminderWorker.kt
Presentation Layer
- Composable UI screens
- ViewModels managing UI state
- Navigation logic
Domain Layer
- Business logic in UseCases
- Domain models
- Repository interfaces
Data Layer
- Repository implementations
- Local data sources (Room)
- Remote data sources (Retrofit)
- Data mappers
UI (Composables)
↕
ViewModel (StateFlow/LiveData)
↕
UseCase (Business Logic)
↕
Repository (Data Abstraction)
↕
Data Sources (Room + Retrofit)
- Android Studio Hedgehog (2023.1.1) or newer
- JDK 11 or higher
- Android SDK (API 24+)
- Kotlin 1.9+
- Gradle 8.0+
- Clone the repository
git clone https://github.com/Chinmay-tayade/Task-App.git
cd Task-App-
Open in Android Studio
- Launch Android Studio
- File > Open > Select the project directory
-
Configure API Keys (Optional - for cloud sync)
Create a
local.propertiesfile in the root directory:API_BASE_URL="https://your-api-endpoint.com/" API_KEY="your_api_key_here"
-
Sync Gradle
- Let Gradle sync all dependencies
- This may take a few minutes
-
Build the project
./gradlew build- Run the app
- Connect Android device or start emulator
- Run > Run 'app'
- Create a Firebase project at Firebase Console
- Download
google-services.json - Place it in the
app/directory - Enable Firebase Cloud Messaging and Analytics
The app supports cloud synchronization. Configure your backend API in gradle.properties:
BASE_URL=https://api.taskmanager.com/v1/./gradlew assembleDebug./gradlew assembleReleasedebug- Debug build with loggingrelease- Optimized production buildstaging- Testing with staging API
./gradlew test./gradlew connectedAndroidTest./gradlew jacocoTestReporttest/
├── viewmodel/ # ViewModel tests
├── repository/ # Repository tests
├── usecase/ # UseCase tests
└── mapper/ # Mapper tests
androidTest/
├── dao/ # Database tests
├── ui/ # Compose UI tests
└── worker/ # WorkManager tests
# Lint check
./gradlew lint
# Kotlin lint
./gradlew ktlintCheck
# Detekt static analysis
./gradlew detekt./gradlew ktlintFormatContributions make the open-source community amazing! Any contributions are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Kotlin coding conventions
- Write unit tests for new features
- Update documentation as needed
- Keep PRs focused and small
- Write clear commit messages
- Calendar integration
- Collaborative task lists
- Voice input for tasks
- AI-powered task suggestions
- Time tracking with Pomodoro timer
- Habit tracking
- Integration with Google Tasks
- Wear OS app
- Desktop companion app
This project is licensed under the MIT License - see the LICENSE file for details.
Chinmay Tayade
- GitHub: @Chinmay-tayade
- LinkedIn: chinmaytayade
- Email: chinmaytayade@outlook.com
- Android Jetpack team for excellent libraries
- Material Design team for beautiful components
- Open-source community for continuous inspiration
- All contributors who help improve this project
Built with Kotlin and Jetpack Compose
Made by Chinmay Tayade