|
|
- Android Studio: Meerkat | 2024.3.1 or newer
- JDK: 11 or higher
- Android SDK: API 35
- Minimum Android: API 26 (Android 8.0)
-
Clone the repository
git clone https://github.com/shreyashp47/DoTrack.git cd DoTrack -
Open in Android Studio
# Open Android Studio and select "Open an existing project" # Navigate to the cloned directory
-
Sync and Build
# In Android Studio: # 1. Sync Gradle files # 2. Build → Make Project # 3. Run on emulator or device
Get the latest release from our Releases page
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
| 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 |
-
Open DoTrack and tap the Add button
-
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
-
Save and watch it appear on your task list!
| 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 |
- Go to Settings
- Enable "Auto Wallpaper Updates"
- Choose your "Wallpaper Color"
- Grant wallpaper permission when prompted
- Your tasks will now appear on your home screen!
- Wallpaper Background: Settings → Wallpaper Color
- Priority Colors: Settings → Task Priority Colors
- Categories: Categories screen → Create custom categories
- Enable notifications in Settings
- When creating/editing tasks, toggle "Enable Reminder"
- Set a due date and time
- Get notified 30 minutes before the deadline
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
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]
- 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
# Unit Tests
./gradlew test
# Instrumented Tests
./gradlew connectedAndroidTest
# All Tests
./gradlew check- Unit Tests: Domain layer business logic
- Integration Tests: Repository implementations
- UI Tests: Compose UI components
- End-to-End Tests: Complete user workflows
We welcome contributions! Please see our Contributing Guidelines for details.
- 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
- Use ktlint for formatting
- Write meaningful commit messages
- Add tests for new features
| Document | Description |
|---|---|
| User Guide | Complete user manual |
| Developer Guide | Development setup and guidelines |
| API Documentation | Code documentation |
| Workflow Guide | CI/CD and release process |
This project is licensed under the MIT License - see the LICENSE file for details.
- 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
Made with ❤️ by Shreyash
DoTrack - Transform your productivity, one task at a time ✨




