Roll the dice on your to-do list 🎲
TaskRoll is a native Android app that helps you tackle your tasks by randomly selecting one from your list. Perfect for when you have multiple tasks but can't decide which one to start with.
- 📝 Task Management: Add, edit, delete, and view your tasks
- 🎲 Random Selection: Get a random task from your incomplete tasks
- ✅ Task Completion: Mark tasks as complete or skip to get another random task
- 💾 Local Persistence: All data stored securely on your device with Room Database
- 🎨 Modern UI: Built with Jetpack Compose and Material3
Coming soon - app is currently in development
- Language: Kotlin
- UI Framework: Jetpack Compose with Material3
- Architecture: MVVM (Model-View-ViewModel) with Clean Architecture
- Database: Room (SQLite)
- Dependency Injection: Hilt
- Async Operations: Kotlin Coroutines & Flow
- Navigation: Navigation Component for Compose
- Min SDK: 24 (Android 7.0)
- Target SDK: 35 (Android 15)
app/src/main/java/com/nshaddox/randomtask/
├── data/
│ ├── local/ # Room database entities and DAOs
│ └── repository/ # Repository implementations
├── domain/
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Business logic use cases
├── ui/
│ ├── screens/ # Compose screens (tasklist, randomtask)
│ └── theme/ # Material3 theme configuration
└── di/ # Hilt dependency injection modules
- Android Studio: Hedgehog (2023.1.1) or later
- JDK: 17 or later
- Minimum Android Version: 7.0 (API 24)
- Gradle: 8.0+
git clone https://github.com/nsshaddox/TaskRoll.git
cd TaskRollInstall pre-commit hooks to run lint and tests before each commit:
./gradlew installGitHooksThis ensures code quality checks run automatically before commits. You can skip hooks with git commit --no-verify if needed.
# Build debug variant
./gradlew assembleDebug
# Build release variant
./gradlew assembleRelease- Open the project in Android Studio
- Connect an Android device or start an emulator
- Click Run or use:
./gradlew installDebug./gradlew test# Requires connected device or running emulator
./gradlew connectedAndroidTest./gradlew test --tests com.nshaddox.randomtask.YourTestClass./gradlew jacocoTestReport- CLAUDE.md - AI assistant instructions and project guidelines
- GITHUB_ISSUES.md - Comprehensive roadmap with 105 issues across 11 phases
- the-idea/ - Planning documents:
core-requirements.md- Functional and non-functional requirementstechnical-options.md- Architecture decisions and technical stack rationaleobservability-strategy.md- Development observability approachproject-roadmap.md- Phased implementation plan
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to contribute to this project.
Quick Guidelines:
- Follow the existing code style (enforced by ktlint)
- Write unit tests for new features
- Update documentation as needed
- Create detailed pull requests
🚧 Currently in Development - Phase 0 (Project Foundation & Setup)
- Phase 0-1: Project setup and architecture foundation ✅ (In Progress)
- Phase 2-3: Domain layer and UI foundation (Planned)
- Phase 4-5: Core screens implementation (Planned)
- Phase 6-7: Data persistence and polish (Planned)
- Phase 8-9: Observability and testing (Planned)
- Phase 10-11: Release preparation and launch (Planned)
See GITHUB_ISSUES.md for the complete 105-issue roadmap.
# Clean build artifacts
./gradlew clean
# View all available Gradle tasks
./gradlew tasks
# Run lint checks
./gradlew lint
# Format code with ktlint
./gradlew ktlintFormat
# Run static analysis with detekt
./gradlew detektThis project is licensed under [LICENSE TO BE DETERMINED] - see the LICENSE file for details.
Nick Shaddox
- GitHub: @nsshaddox
- Built with guidance from Claude Code (Anthropic)
- Inspired by the challenge of decision fatigue when choosing which task to tackle
- Community feedback and contributions
Future versions may include:
- v1.1: Task categories and tags
- v1.2: Task priority levels
- v1.3: Task scheduling and due dates
- v2.0: Cloud sync and backup
- v2.1: Statistics and analytics
- v2.2: Notifications and reminders
Like rolling dice, the app randomly selects a task for you, removing the paralysis of choice when you have many things to do.
Yes! All task data is stored locally on your device using Room Database. We don't collect, share, or sync any data (in the MVP version).
TaskRoll supports Android 7.0 (API 24) and above, covering 99%+ of active Android devices.
Made with ❤️ and Kotlin