A feature-rich Android alarm application built with Jetpack Compose that ensures you wake up through interactive challenges and provides detailed wake-up analytics.
- Multiple Alarms: Create and manage unlimited alarms
- Recurring Alarms: Set alarms for specific days of the week (Mon-Sun)
- Smart Scheduling: Alarms persist across device reboots
- Snooze Function: Quick snooze option when alarms ring
- Duplicate Alarms: Easily duplicate existing alarm configurations
- Preview Mode: Test alarm ringing screen before actual alarm time
Force yourself to wake up by completing one of four interactive challenges:
- Solve mathematical equations to dismiss the alarm
- Difficulty levels ensure you're mentally alert
- Random equation generation
- Type a displayed sentence correctly
- Tests accuracy and focus
- Multiple sentence variations
- Shake your device a specific number of times
- Uses accelerometer sensor
- Visual progress indicator with real-time shake count
- Scan a pre-registered QR code to dismiss alarm
- Forces you to physically move to a specific location
- Camera-based verification
- Visual representation of your wake-up patterns
- 9-row hourly grid (4 AM - 12 PM)
- Monthly timeline with automatic month updates (Dec, Jan, Feb, Mar, Apr)
- Color-coded activity dots:
- Teal/Cyan: Successfully completed alarm challenge
- Dark Grey: No activity/missed alarm
- Tracks consistency across days and months
A comprehensive gamified stats screen featuring:
- Custom profile display with decorative rings
- Level indicator (e.g., "Level 42")
- User identification
- Hexagonal visualization of multiple metrics
- Tracks skills like Writing, Financial, Learning, Value Earning
- Interactive Canvas-drawn chart
- Individual skill tracking with progress bars
- Visual representation of skill development
- Color-coded progress indicators
- Vertical bar chart showing daily activity levels
- Gradient purple theme
- Quick visual overview of engagement
- Progress towards level goals (e.g., "695/2000")
- Percentage completion display (40% XP Goal)
- Segmented progress visualization
- GitHub-style activity heatmap
- Shows consistency over time
- Purple theme matching app aesthetic
- Pure black background (
#000000) - Dark grey cards (
#1C1C1E) - Teal/Cyan accents (
#26C6DA) - Purple theme for profile section (
#BB86FC,#6200EE)
- Material 3 components
- Smooth animations and transitions
- Rounded corners and soft shadows
- Responsive layouts
- Bottom navigation bar with 5 tabs:
- 🔔 Alarm (Main screen)
- 🌙 Sleep
- ☀️ Morning
- 📊 Report
- ⚙️ Setting
- Profile access via top app bar icon
- Intuitive back navigation
- Full-screen alarm display over lock screen
- Ensures alarms can't be easily dismissed
- Dedicated permission request screen
- Automatically reschedules alarms after device restart
- Ensures no alarms are missed due to reboots
- High-priority alarm notifications
- Quick actions (Snooze/Dismiss)
- Persistent notifications during alarm ring
- Room Database for local alarm storage
- Type Converters for complex data types (Lists, Enums)
- Repository Pattern for clean architecture
- Automatic data synchronization
- Language: Kotlin
- UI Framework: Jetpack Compose
- Architecture: MVVM (Model-View-ViewModel)
- Database: Room
- Dependency Injection: Manual Factory Pattern
- Navigation: Compose Navigation
- Async: Kotlin Coroutines & Flow
AlarmDao: Database access objectAlarmDatabase: Room database configurationAlarmRepository: Data repositoryAlarm: Data model with challenge types
AlarmScheduler: Interface for alarm schedulingAndroidAlarmScheduler: Android AlarmManager implementationAlarmService: Foreground service for alarm ringing
HomeScreen: Main alarm list and trackerAlarmScreen: Create/Edit alarm interfaceAlarmRingingScreen: Full-screen alarm with challengesProfileScreen: User stats and analytics dashboardTrackerSection: Wake-up heatmap visualization
AlarmReceiver: BroadcastReceiver for alarm triggersBootReceiver: Handles device boot eventsSnoozeReceiver: Manages snooze functionality
data class Alarm(
val id: Int,
val hour: Int,
val minute: Int,
val isEnabled: Boolean,
val daysOfWeek: List<Int>,
val challengeType: ChallengeType,
val label: String
)
enum class ChallengeType {
MATH,
TYPING,
SHAKE,
QR_CODE
}- Create Alarm: Set time, days, and challenge type
- Alarm Triggers: Full-screen overlay appears with moon theme
- Complete Challenge: Solve math/type/shake/scan QR
- Track Progress: View wake-up patterns in heatmap
- Review Stats: Check profile dashboard for insights
- Android Studio Hedgehog or later
- Android SDK 24+ (Android 7.0)
- Kotlin 1.9+
- Clone the repository
- Open in Android Studio
- Sync Gradle dependencies
- Run on emulator or physical device
SCHEDULE_EXACT_ALARM: For precise alarm timingSYSTEM_ALERT_WINDOW: For overlay displayVIBRATE: For alarm vibrationWAKE_LOCK: To wake device from sleepRECEIVE_BOOT_COMPLETED: For boot persistenceCAMERA: For QR code challenge (optional)
The app follows a dark-first design approach with:
- High contrast for visibility
- Teal accents for active states
- Purple gradients for gamification
- Minimalist card-based layouts
- Smooth transitions and micro-interactions
- Sleep tracking integration
- Morning routine suggestions
- Detailed analytics reports
- Custom challenge creation
- Social features (compete with friends)
- Smart alarm (wake during light sleep)
- Weather-based alarm adjustments
- Spotify/Music integration
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Built with ❤️ using Jetpack Compose and modern Android development practices.
Note: This app is designed to help you build better wake-up habits through engaging challenges and visual progress tracking. Wake up, complete challenges, track your consistency! 🌅