Skip to content

revs87/snoozeloo-and

Repository files navigation

Static Badge

Static Badge

image

Snoozeloo - A modern and simple Alarm application.

📜 Summary

This is a modern Alarm clock Android Native application called ⏰ Snoozeloo. The development of this app was motivated and was part of the Mobile Dev Campus Monthly Challenge (from Philipp Lackner) for November of 2024.

📌 Features

  • Creation and Edit of multiple One-time alarm entries.
  • Killing the app does not stop alarm triggering.
  • Rebooting the Android device does not stop alarm triggering.
  • Bedtime recommendations for optimal sleep
  • Dark mode supported.

🚀 Technical Highlights

  • Android Native
  • 100% Kotlin
  • 100% Jetpack Compose
  • Kotlin Coroutines and Flows
  • Broadcast Receivers
  • Boot Broadcast Receivers
  • AlarmManager: precise scheduling for Alarm tasks
  • Push Notifications
  • Dynamic Permissions handling: POST_NOTIFICATIONS and USE_FULL_SCREEN_INTENT
  • Unit tests applied to TimeHelper

🏛️ Architecture & Design Patterns

  • Single module architecture
  • Single Activity architecture
  • MVVM presentation pattern with UI States when editing an Alarm
  • MVI unidirectional data flow from Actions to State
  • Sealed interfaces for Actions and Destinations files
  • Dependency Injection applied with Koin
  • Dependency Inversion Principle (DIP) from data to presentation layers
  • Single Source of Truth in a Room database
  • Reactive Navigation (Flow listening)

📲 UI

  • Dark mode supported
  • Jetpack Compose No-type Args navigation
  • Jetpack Compose Deep Linking navigation
  • Bespoke TimeCard (copied from Material3 TimePicker's source)
  • Delete Alarm entry with a side swipe from RTL
  • 12H and 24H support

🗄️ Local Persistence

  • SavedStateHandle persistence for the Alarm editing
  • Room DB (on KSP)

🎨 Design

📸 Screenshots

Splash Alarm List Existing Alarm Editing
1_intro 2_list 3_edit
New Alarm Editing Alarm Time Setting Alarm Ringing
4_new 5_time 6_trigger

🖧 Project structure

This project is structured in a single module divided by the following 5 packages:

common/

data/

di/

domain/

ui/

🕹️ Usage

☑ Project Requirements

  • Java 17+
  • The latest Android Studio Ladybug or above (for easy install use JetBrains Toolbox)
  • Minimum SDK: 28 (Android 9)
  • Target SDK: 35 (Android 15)
  • Kotlin 2.0.21

⚙️ Configuration

Run ./gradlew build

🧾 License

Check LICENSE from the project.

🤝 Contributing

Check CONTRIBUTING.md from the project.

About

This is a modern Alarm clock Android Native application called Snoozeloo.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages