An Android app that listens to notifications, logs them locally, and intelligently processes booking-related messages.
notify/
├── app/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ ├── java/com/example/notify/
│ │ │
│ │ ├── MainActivity.kt # App entry point, Compose host
│ │ ├── NotifyApp.kt # Application class (Hilt)
│ │ │
│ │ ├── booking/ # Booking intelligence layer
│ │ │ ├── BookingApiService.kt # API calls for booking processing
│ │ │ ├── BookingConfig.kt # Configuration constants
│ │ │ ├── BookingMessageParser.kt # Parses booking SMS/notifications
│ │ │ ├── BookingProcessingState.kt # State model for booking flow
│ │ │ └── BookingProcessor.kt # Core booking processing logic
│ │ │
│ │ ├── data/
│ │ │ ├── local/
│ │ │ │ ├── NotificationDatabase.kt # Room database setup
│ │ │ │ ├── dao/
│ │ │ │ │ ├── AppDao.kt # DAO for tracked apps
│ │ │ │ │ ├── BookingDao.kt # DAO for booking records
│ │ │ │ │ └── NotificationDao.kt # DAO for notifications
│ │ │ │ └── entity/
│ │ │ │ ├── AppEntity.kt # Tracked app data model
│ │ │ │ ├── BookingFingerprintEntity.kt # Dedup fingerprint model
│ │ │ │ ├── BookingLogEntity.kt # Booking log data model
│ │ │ │ └── NotificationEntity.kt # Notification data model
│ │ │ └── repository/
│ │ │ └── NotificationRepository.kt # Single source of truth
│ │ │
│ │ ├── di/ # Hilt dependency injection
│ │ │ ├── BookingModule.kt # Provides booking dependencies
│ │ │ └── DatabaseModule.kt # Provides Room DB & DAOs
│ │ │
│ │ ├── service/ # Background services
│ │ │ ├── BootReceiver.kt # Restart service on device boot
│ │ │ └── NotificationReceiverService.kt # NotificationListenerService
│ │ │
│ │ └── ui/
│ │ ├── components/
│ │ │ └── NotificationCard.kt # Reusable notification list item
│ │ ├── navigation/
│ │ │ ├── NavGraph.kt # Compose navigation graph
│ │ │ └── Screen.kt # Sealed class for routes
│ │ ├── screens/
│ │ │ ├── AppsScreen.kt # Manage tracked apps
│ │ │ ├── DashboardScreen.kt # Stats & booking overview
│ │ │ ├── HomeScreen.kt # Notification feed
│ │ │ ├── NotificationDetailScreen.kt # Full notification view
│ │ │ ├── OnboardingScreen.kt # Permission onboarding flow
│ │ │ └── SettingsScreen.kt # App settings
│ │ ├── theme/
│ │ │ ├── Color.kt # Color palette
│ │ │ └── Theme.kt # Material3 theme config
│ │ └── viewmodel/
│ │ ├── AppsViewModel.kt # ViewModel for AppsScreen
│ │ ├── DashboardViewModel.kt # ViewModel for DashboardScreen
│ │ ├── HomeViewModel.kt # ViewModel for HomeScreen
│ │ └── SettingsViewModel.kt # ViewModel for SettingsScreen
│ │
│ └── res/
│ ├── drawable/ # Vector icons & avatars
│ ├── layout/ # Legacy XML layouts
│ ├── menu/ # Navigation menus
│ ├── mipmap-*/ # App launcher icons
│ ├── navigation/ # Nav component graph
│ ├── values/ # Colors, strings, themes
│ └── xml/ # Backup & data extraction rules
│
├── gradle/
│ └── libs.versions.toml # Version catalog
├── build.gradle.kts # Root build config
├── settings.gradle.kts # Project settings
└── gradle.properties # Gradle JVM & project flags
| Layer | Technology |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose + Material3 |
| Architecture | MVVM + Repository pattern |
| DI | Hilt |
| Database | Room |
| Navigation | Compose Navigation |
| Background | NotificationListenerService |
- Clone the repo
git clone https://github.com/kynhood/notify.git
- Open in Android Studio
- Build & run on a device/emulator (API 26+)
- Grant Notification Access permission when prompted during onboarding