Skip to content

A modern task management application built with clean architecture and Jetpack Compose that transforms your device wallpaper into a dynamic task list.

Notifications You must be signed in to change notification settings

shreyashp47/DoTrack

Repository files navigation

DoTrack

A modern task management application that transforms your device wallpaper into a dynamic task list

Android API Kotlin License Build Status

Download APKDocumentationReport BugRequest Feature


Features

Task Management

  • Create, edit, complete, and delete tasks
  • Priority levels (High, Medium, Low)
  • Due dates and time tracking
  • Category organization
  • Smart reminder notifications

Dynamic Wallpaper

  • Auto-update device wallpaper with tasks
  • Customizable color themes
  • Adaptive text colors for readability
  • Real-time wallpaper sync
  • Manual sync control

Screenshots

Tasks Screen
Tasks Overview
Add Task
Add/Edit Task
Settings
Settings
Wallpaper
Dynamic Wallpaper

Quick Start

Prerequisites

  • Android Studio: Meerkat | 2024.3.1 or newer
  • JDK: 11 or higher
  • Android SDK: API 35
  • Minimum Android: API 26 (Android 8.0)

Installation

  1. Clone the repository

    git clone https://github.com/shreyashp47/DoTrack.git
    cd DoTrack
  2. Open in Android Studio

    # Open Android Studio and select "Open an existing project"
    # Navigate to the cloned directory
  3. Sync and Build

    # In Android Studio:
    # 1. Sync Gradle files
    # 2. Build → Make Project
    # 3. Run on emulator or device

Download APK

Get the latest release from our Releases page


Architecture

DoTrack follows Clean Architecture principles with a multi-module approach:

DoTrack
├── app/                    # Presentation Layer
│   ├── ui/                 # Compose UI Components
│   ├── navigation/         # Navigation Logic
│   └── workmanager/        # Background Tasks
├── domain/                 # Business Logic Layer
│   ├── model/              # Domain Models
│   ├── repository/         # Repository Interfaces
│   └── usecase/            # Business Use Cases
├── data/                   # Data Layer
│   ├── local/              # Room Database
│   ├── repository/         # Repository Implementations
│   └── di/                 # Dependency Injection
└── core/                   # Shared Components
    ├── ui/                 # Common UI Components
    └── util/               # Utilities

Tech Stack

Architecture MVVM + Clean Architecture
UI Framework Jetpack Compose + Material 3
Dependency Injection Hilt
Navigation Compose Navigation
Database Room
Preferences DataStore
Concurrency Kotlin Coroutines + Flow
Background Tasks WorkManager
Testing JUnit, MockK, Espresso

How to Use

Creating Your First Task

  1. Open DoTrack and tap the Add button

  2. Fill in task details:

    • Title: What needs to be done?
    • Description: Additional details (optional)
    • Priority: High, Medium, or Low
    • Due Date: Set a deadline
    • Reminder: Get notified before due time
    • Category: Organize your tasks
  3. Save and watch it appear on your task list!

Managing Tasks

Action How To
Complete Task Tap the checkbox
Edit Task Tap on task → Edit icon
Delete Task Task details → Delete icon
View Details Tap on any task

Customizing Your Experience

Dynamic Wallpaper Setup

  1. Go to Settings
  2. Enable "Auto Wallpaper Updates"
  3. Choose your "Wallpaper Color"
  4. Grant wallpaper permission when prompted
  5. Your tasks will now appear on your home screen!

Personalizing Colors

  • Wallpaper Background: Settings → Wallpaper Color
  • Priority Colors: Settings → Task Priority Colors
  • Categories: Categories screen → Create custom categories

Setting Up Reminders

  1. Enable notifications in Settings
  2. When creating/editing tasks, toggle "Enable Reminder"
  3. Set a due date and time
  4. Get notified 30 minutes before the deadline

Project Structure

Detailed File Structure
DoTrack/
├── app/src/main/java/com/shreyash/dotrack/
│   ├── ui/
│   │   ├── tasks/
│   │   │   ├── TasksScreen.kt
│   │   │   ├── TasksViewModel.kt
│   │   │   ├── TaskDetailScreen.kt
│   │   │   └── addedit/
│   │   │       ├── AddEditTaskScreen.kt
│   │   │       └── AddEditTaskViewModel.kt
│   │   ├── categories/
│   │   │   ├── CategoriesScreen.kt
│   │   │   └── CategoriesViewModel.kt
│   │   └── settings/
│   │       ├── SettingsScreen.kt
│   │       └── SettingsViewModel.kt
│   ├── navigation/
│   │   ├── DoTrackNavHost.kt
│   │   ├── DoTrackDestinations.kt
│   │   └── DoTrackBottomNavigation.kt
│   ├── workmanager/
│   │   ├── ReminderSchedulerImpl.kt
│   │   └── ReminderModule.kt
│   ├── core/util/
│   │   └── WallpaperGenerator.kt
│   ├── DoTrackApplication.kt
│   └── MainActivity.kt
│
├── domain/src/main/java/com/shreyash/dotrack/domain/
│   ├── model/
│   │   ├── Task.kt
│   │   └── Category.kt
│   ├── repository/
│   │   ├── TaskRepository.kt
│   │   ├── CategoryRepository.kt
│   │   └── UserPreferencesRepository.kt
│   └── usecase/
│       ├── task/
│       │   ├── AddTaskUseCase.kt
│       │   ├── GetTasksUseCase.kt
│       │   ├── UpdateTaskUseCase.kt
│       │   └── DeleteTaskUseCase.kt
│       ├── category/
│       │   └── [Category Use Cases]
│       └── preferences/
│           └── [Preference Use Cases]
│
├── data/src/main/java/com/shreyash/dotrack/data/
│   ├── local/
│   │   ├── entity/
│   │   │   ├── TaskEntity.kt
│   │   │   └── CategoryEntity.kt
│   │   ├── dao/
│   │   │   ├── TaskDao.kt
│   │   │   └── CategoryDao.kt
│   │   └── TaskDatabase.kt
│   ├── repository/
│   │   ├── TaskRepositoryImpl.kt
│   │   ├── CategoryRepositoryImpl.kt
│   │   └── UserPreferencesRepositoryImpl.kt
│   └── di/
│       ├── DatabaseModule.kt
│       ├── RepositoryModule.kt
│       └── DataStoreModule.kt
│
└── core/src/main/java/com/shreyash/dotrack/core/
    ├── ui/
    │   ├── components/
    │   │   └── LoadingIndicator.kt
    │   └── theme/
    │       ├── Color.kt
    │       ├── Theme.kt
    │       └── Type.kt
    └── util/
        └── Result.kt

CI/CD Pipeline

DoTrack uses GitHub Actions for automated deployment:

graph LR
    A[Push to main] --> B[Build & Test]
    B --> C[Generate APK]
    C --> D[Sign Release]
    D --> E[Deploy to Play Store]
    E --> F[Create GitHub Release]
Loading

Pipeline Features

  • Automated Builds on every PR and push
  • Version Management with auto-increment
  • Release Management with signed APKs
  • Google Play Deployment (Internal Testing & Production)
  • GitHub Releases with changelog

Testing

Running Tests

# Unit Tests
./gradlew test

# Instrumented Tests
./gradlew connectedAndroidTest

# All Tests
./gradlew check

Test Coverage

  • Unit Tests: Domain layer business logic
  • Integration Tests: Repository implementations
  • UI Tests: Compose UI components
  • End-to-End Tests: Complete user workflows

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Style


Documentation

Document Description
User Guide Complete user manual
Developer Guide Development setup and guidelines
API Documentation Code documentation
Workflow Guide CI/CD and release process

License

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


🙏 Acknowledgments

  • Material Design 3 for the beautiful UI components
  • Android Jetpack for the robust architecture components
  • Kotlin Coroutines for seamless asynchronous programming
  • Open Source Community for the amazing libraries and tools

📞 Support & Contact

Need help or have suggestions?

Email GitHub Issues LinkedIn

⭐ Star this repo if you find it helpful!


Made with ❤️ by Shreyash

DoTrack - Transform your productivity, one task at a time

About

A modern task management application built with clean architecture and Jetpack Compose that transforms your device wallpaper into a dynamic task list.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •