A modern Android application built with Jetpack Compose that allows users to create and manage multiple timers organized in groups with swipe navigation.
- Multiple Timers: Create unlimited timers with custom names
- Predefined Durations: Quick selection from common time intervals (5min, 10min, 15min, 30min, 1hr, 2hr)
- Custom Duration: Set custom timer durations in minutes
- Real-time Countdown: Live countdown with progress indicators
- Background Operation: Timers continue running even when app is in background
- Timer Groups: Organize timers into color-coded groups
- Group Management: Add, delete, and manage timer groups
- Color Coding: Each group has a unique color for easy identification
- Group Statistics: See timer count per group
- Horizontal Swiping: Swipe left/right to navigate between timer groups
- Group Indicators: Visual chips showing all groups with current selection
- Smooth Animations: Fluid transitions between groups
- Material Design 3: Latest Material Design components and theming
- Dark/Light Theme: Automatic theme switching based on system preference
- Responsive Design: Optimized for different screen sizes
- Accessibility: Screen reader support and keyboard navigation
- Kotlin: Modern Android development language
- Jetpack Compose: Declarative UI toolkit
- Room Database: Local data persistence with SQLite
- ViewModel & LiveData: Reactive UI state management
- Coroutines: Asynchronous programming
- Material 3: Latest Material Design components
- MVVM Pattern: Model-View-ViewModel architecture
- Repository Pattern: Clean data access layer
- Service Layer: Background timer management
- Dependency Injection: Manual DI for simplicity
app/src/main/java/com/example/smarttimer/
├── data/ # Data layer
│ ├── Timer.kt # Timer entity
│ ├── TimerGroup.kt # Timer group entity
│ ├── TimerDao.kt # Database access object
│ ├── TimerDatabase.kt # Room database
│ └── TimerRepository.kt # Repository pattern
├── service/ # Background services
│ └── TimerService.kt # Timer management service
├── ui/ # UI layer
│ ├── MainViewModel.kt # Main screen view model
│ ├── TimerViewModel.kt # Timer management view model
│ ├── components/ # Reusable UI components
│ ├── screens/ # Screen composables
│ └── theme/ # App theming
└── MainActivity.kt # Main activity
- Android Studio Arctic Fox or later
- Android SDK 24+ (API level 24)
- Kotlin 1.9.0+
- Clone the repository
- Open the project in Android Studio
- Sync Gradle files
- Build and run the app
- Tap the "+" button in the top app bar
- Enter a group name
- Select a color from the color palette
- Tap "Add Group"
- Navigate to a timer group
- Tap the "+" button in the group header
- Enter timer name
- Choose predefined duration or enter custom minutes
- Tap "Add Timer"
- Start Timer: Tap the "Start" button on any timer
- Stop Timer: Tap the "Stop" button on running timers
- Delete Timer: Tap the delete icon on timer cards
- Delete Group: Tap the delete icon in group headers
- Swipe Left/Right: Navigate between timer groups
- Tap Group Chips: Quick navigation to specific groups
The app uses a foreground service to maintain timer state even when the app is not in focus. This ensures:
- Timers continue running in background
- Notification shows active timer count
- Timer state persists across app restarts
Local SQLite database using Room for:
- Timer and group persistence
- Foreign key relationships
- Automatic data synchronization
Horizontal pager implementation with:
- Smooth swipe gestures
- Visual group indicators
- State management for current group
Modern UI components including:
- Dynamic color theming
- Adaptive layouts
- Accessibility features
- Timer sound notifications
- Timer repeat functionality
- Timer templates
- Cloud synchronization
- Widget support
- Timer sharing
- Statistics and analytics
- Multiple timer simultaneous running
- Timer categories and tags
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Material Design 3 guidelines
- Jetpack Compose documentation
- Android Room persistence library
- Kotlin coroutines for async programming