Skip to content

Repository files navigation

CountDown Hour and Pomodoro - Simple & Clean UI

A minimalist Android countdown timer app with Pomodoro functionality, optimized for e-ink displays.

Countdown Hour_20251130-194014 Countdown Hour_20251203-185152 Countdown Hour_20251203-185030 Countdown Hour_20251203-185044 Countdown Hour_20251203-185118 Countdown Hour_20251130-194153
Countdown Hour_20251203-185218 Countdown Hour_20251203-185130

Features

Countdown Timer

  • Set a target time (24h format) and countdown until you reach it
  • Custom time picker with swipe gestures (swipe up/down to adjust)
  • Tap on hour/minute to fine-tune by ±1
  • Visual circular progress indicator
  • Real-time summary showing NOW → DIFF → TARGET
  • Pause/Resume/Stop controls
  • Portrait and landscape layouts with large, readable typography

Pomodoro Timer

  • Classic Pomodoro technique implementation
  • Customizable durations via slider controls:
    • Focus session: 5-120 min (default: 25 min)
    • Short break: 1-30 min (default: 5 min)
    • Long break: 5-60 min (default: 15 min)
    • Pomodoros until long break: 2-8 (default: 4)
  • Visual progress tracking with cycle indicators
  • Completed pomodoros counter
  • Elapsed time display after session completion
  • Extend time during session:
    • Tap +5 button to add 5 minutes
    • Long press +5 button to add 1 minute
    • Swipe up/down on timer to add/remove minutes

Task Management

  • Task pool to store up to 50 tasks
  • Select up to 5 tasks for each focus session
  • Tasks displayed in subtle card during focus
  • Tap to mark tasks as completed (strikethrough)
  • Completed tasks auto-unselected and moved to "DONE" section
  • Completed tasks cannot be re-selected for new sessions
  • Change task selection mid-session (double-tap timer to open task pool)
  • Preview selected tasks (long press 1s on task list icon)
  • Edit/rename tasks (swipe left on task)
  • Export tasks as markdown (long press "Task Pool" title)

Gestures & Shortcuts

Action Gesture
Start focus without tasks Long press Focus button
Add 5 minutes to session Tap +5 button
Add 1 minute to session Long press +5 button
Adjust time during session Swipe up/down on timer
Fine-tune duration (±1 min) Swipe up/down on duration text
Open task pool during session Double tap on timer
Preview selected tasks Long press (1s) task list icon
Edit/rename task Swipe left on task
Toggle task completion in pool Long press on task
Export tasks as markdown Long press "Task Pool" title
Clear all tasks Double tap trash icon (with 10s undo)
Clear only completed tasks Long press trash icon
Dismiss keyboard Tap outside text field

Data Persistence

  • Tasks, settings, and progress saved automatically
  • Data survives app restarts and updates
  • Task timestamps (created/completed) tracked

E-Ink Optimized

  • High contrast black & white theme
  • Large monospace typography for excellent readability
  • Minimal animations to reduce screen flickering
  • Clean, distraction-free interface

Tech Stack

  • Language: Kotlin
  • UI: Jetpack Compose with Material 3
  • Architecture: MVVM with ViewModel and StateFlow
  • Persistence: DataStore Preferences + Kotlin Serialization
  • Min SDK: 21 (Android 5.0)
  • Target SDK: 34 (Android 14)

Background Support

  • Timer continues running when app is in background
  • Notification shows remaining time
  • Screen stays awake while app is active

Building

# Clone the repository
git clone https://github.com/oreglio/countdown-pomodoro.git

# Build the project
./gradlew build

# Install on connected device
./gradlew installDebug

Project Structure

app/src/main/java/com/countdownhour/
├── MainActivity.kt
├── data/
│   ├── TimerState.kt
│   ├── PomodoroState.kt
│   └── PomodoroDataStore.kt
├── service/
│   └── TimerService.kt
├── viewmodel/
│   ├── TimerViewModel.kt
│   └── PomodoroViewModel.kt
└── ui/
    ├── components/
    │   ├── CircularProgress.kt
    │   ├── ControlButtons.kt
    │   ├── TimePickerDialog.kt
    │   ├── TimeSummaryCard.kt
    │   ├── PomodoroProgress.kt
    │   └── PomodoroSettingsDialog.kt
    ├── screens/
    │   ├── TimerScreen.kt
    │   ├── PomodoroScreen.kt
    │   └── MainScreen.kt
    └── theme/
        └── Theme.kt

AI

The whole code is generated with Claude Code. I just needed to have those features in a simple and clean app.

License

MIT License - feel free to use and modify as needed.

About

Simple & Clean app - Countdown from hour - Pomodoro

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages