Skip to content

Repository files navigation

NotifPlus πŸ””

NotifPlus Live Preview

Privacy-First Android Local Notification History & Media Archiving Application (NotiStar-Style Background Resilience)

Android Platform Kotlin Jetpack Compose Material 3 DevSecOps Offline Only


πŸ“± Live Device Preview

Riwayat Notifikasi Aturan Aplikasi Detail Notifikasi Pengaturan & Retensi
Riwayat Screen App Rules Screen Detail Screen Settings Screen

πŸ“Œ Project Overview

NotifPlus adalah aplikasi pencatat dan pengarsip riwayat notifikasi lokal (local notification history) untuk perangkat Android dengan standar keamanan dan privasi tingkat tinggi (Zero-Internet Privacy & DevSecOps Best Practices) serta keandalan penangkapan latar belakang tanpa jeda seperti Samsung NotiStar.

Seringkali pesan atau notifikasi penting diubah, dihapus, atau ditarik oleh pengirim pada aplikasi perpesanan (misalnya WhatsApp, Telegram, dll.), atau tidak sengaja terhapus dari panel notifikasi sistem. NotifPlus menangkap setiap peristiwa notifikasi yang masuk melalui NotificationListenerService secara immutable snapshot, sehingga riwayat pesan awal beserta lampiran medianya tetap tersimpan secara aman di penyimpanan privat perangkat.

πŸ›‘οΈ Filosofi Keamanan & Privasi (Zero-Internet Architecture)

  • Zero Internet Permission: NotifPlus tidak meminta ataupun mendeklarasikan izin akses internet (android.permission.INTERNET). Data notifikasi Anda tidak akan pernah keluar dari perangkat.
  • App-Sandboxed Storage: Database SQLite (Room) dan file lampiran media disimpan di penyimpanan internal privat (filesDir), serta dikecualikan dari Android Cloud Backup (allowBackup="false").
  • No Log Leaks: Konten notifikasi sensitif tidak pernah dicetak ke log sistem (Logcat).
  • Biometric Security: Dilengkapi proteksi autentikasi biometrik bawaan (Fingerprint / Face Unlock).

⚑ Keandalan Latar Belakang (Samsung One UI / Android 13+ Resilient)

Untuk mengatasi pembunuhan proses agresif oleh sistem operasi OEM (seperti Samsung One UI, Xiaomi MIUI/HyperOS) dan Doze Mode pada Android 13+:

  1. Self-Healing Rebind Engine: Mendeteksi hilangnya koneksi binder dan secara dinamis memulihkan NotificationListenerService menggunakan requestRebind() dan pemulihan komponen PackageManager.
  2. Boot & Package Update Auto-Recovery: Menggunakan BootCompletedReceiver dengan RECEIVE_BOOT_COMPLETED dan MY_PACKAGE_REPLACED agar pemantauan langsung aktif kembali saat ponsel dinyalakan ulang.
  3. Battery Optimization Handling: Integrasi langsung dengan REQUEST_IGNORE_BATTERY_OPTIMIZATIONS untuk mencegah sistem mematikan penangkapan notifikasi di latar belakang.
  4. Resilient Payload Parser: Perlindungan terhadap crash saat mengekstrak Parcelable / Bundle yang berukuran besar atau memiliki format proprietary OEM.

✨ Fitur Utama

  • πŸ“Έ Immutable Notification Snapshots: Setiap perubahan notifikasi (diedit, diganti, atau dihapus) disimpan sebagai snapshot terpisah yang tidak dapat ditimpa.
  • πŸ–ΌοΈ Media Attachment Extractor: Mengunduh dan mengarsipkan gambar/media lampiran notifikasi secara otomatis sebelum notifikasi aslinya hilang.
  • πŸ” Pencarian & Pemfilteran Real-Time: Cari notifikasi dengan debouncing cepat berdasarkan teks, nama aplikasi asal, rentang waktu, atau status lampiran.
  • 🧹 Retention Lifecycle & Automated Cleanup: Pengaturan masa retensi arsip (7 hari, 30 hari, 90 hari, atau permanen) yang dibersihkan secara berkala menggunakan Android WorkManager.
  • ⚑ Per-App Auto-Dismiss Rules: Opsi untuk otomatis menutup notifikasi asli per-aplikasi setelah notifikasi berhasil tersimpan di NotifPlus.
  • πŸ”’ Biometric App Lock: Mengunci akses ke riwayat notifikasi menggunakan sensor biometrik perangkat.
  • πŸ“¦ Export & Archive Transfer: Ekspor riwayat notifikasi yang sepenuhnya dikendalikan oleh pengguna.

πŸ› οΈ Stack Teknologi

Aplikasi ini dibangun menggunakan arsitektur modern Android (Clean Architecture + MVVM):

Komponen Teknologi / Library
Language Kotlin 2.0.21
Build System Gradle 8.9 / Android Gradle Plugin (AGP) 8.7.3 (Kotlin DSL)
Min / Target SDK Android 10 (API 29) / Android 15 (API 36)
UI Framework Jetpack Compose (BOM 2024.12.01) + Material 3
Icons & Design Material Icons Extended
Architecture Clean Architecture (Domain, Data, Presentation, UI, Service)
Dependency Injection Dagger Hilt 2.53.1 + Hilt Navigation Compose + Hilt Work
Database & ORM AndroidX Room 2.7.0 (KSP, Room Paging, Migrations)
Preferences AndroidX DataStore Preferences 1.1.2
Background Tasks AndroidX WorkManager 2.10.0
Paging AndroidX Paging 3.3.5
Image Loading Coil Compose 2.7.0
Security / Biometrics AndroidX Biometric 1.1.0
Serialization Kotlinx Serialization JSON 1.7.3
Testing JUnit 4, Google Truth, Kotlinx Coroutines Test, Espresso, AndroidX Test Core
DevSecOps & CI/CD GitHub Actions, Gitleaks Secret Scanning, Android Lint SAST

πŸ—οΈ Struktur Proyek

NotifPlus/
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── devsecops-ci.yml       # Automated Build, Test, Lint & Secret Scanning
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”‚   β”œβ”€β”€ java/com/notifplus/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ data/          # Room Database, DAOs, Entities, Repositories
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ di/            # Hilt Dependency Injection Modules
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ domain/        # Models, UseCases, Repository Interfaces
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ presentation/  # ViewModels (History, Detail, Settings, Access)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ service/       # NotificationCaptureService, BootReceiver & Workers
β”‚   β”‚   β”‚   β”‚   └── ui/            # Jetpack Compose Screens, Components, Theme
β”‚   β”‚   β”‚   β”œβ”€β”€ res/               # Drawables, Strings, XML Data Rules
β”‚   β”‚   β”‚   └── AndroidManifest.xml
β”‚   β”‚   └── test/                  # Unit Tests (JUnit & Truth)
β”‚   └── build.gradle.kts
β”œβ”€β”€ docs/                          # Device Screenshots & Previews
β”œβ”€β”€ gradle/
β”‚   └── libs.versions.toml         # Version Catalog
β”œβ”€β”€ .gitignore                     # Android & DevSecOps Best Practices Ignore Rules
β”œβ”€β”€ PRIVACY.md                     # Disclosure Kebijakan Privasi
β”œβ”€β”€ SECURITY.md                    # Kebijakan Keamanan & Pelaporan Kerentanan
β”œβ”€β”€ README.md                      # Dokumentasi Proyek
└── settings.gradle.kts

πŸš€ Cara Install & Menjalankan Proyek

Prasyarat:

  1. JDK 17 (disarankan Eclipse Temurin atau OpenJDK 17).
  2. Android Studio (Koala / Ladybug atau versi yang lebih baru).
  3. Android SDK dengan platform API 36 (Build Tools 34/35).
  4. Perangkat fisik atau Emulator Android dengan Android 10 (API 29) ke atas.

Langkah Instalasi:

  1. Clone Repository:

    git clone https://github.com/Adrian463588/NotifPlus.git
    cd NotifPlus
  2. Jalankan Unit Test:

    # Windows (PowerShell)
    .\gradlew.bat test
    
    # Linux / macOS
    ./gradlew test
  3. Build APK (Debug):

    # Windows (PowerShell)
    .\gradlew.bat assembleDebug
    
    # Linux / macOS
    ./gradlew assembleDebug

    File APK hasil build akan berada di app/build/outputs/apk/debug/app-debug.apk.

  4. Install ke Perangkat / Emulator via ADB:

    adb install -r app/build/outputs/apk/debug/app-debug.apk
  5. Aktivasi Izin Akses Notifikasi (PENTING):

    • Buka aplikasi NotifPlus di perangkat Anda.
    • Ketuk banner "Akses Notifikasi".
    • Aktifkan toggle untuk NotifPlus pada pengaturan sistem.

πŸ”’ Praktik DevSecOps

Repositori ini menerapkan siklus DevSecOps otomatis melalui GitHub Actions:

  1. Secret & Credential Scanning: Menggunakan Gitleaks untuk mendeteksi kunci API, token, atau kredensial rahasia.
  2. Static Application Security Testing (SAST): Menjalankan Android Lint untuk mengevaluasi celah keamanan, konfigurasi manifest, dan performa kode.
  3. Automated Unit Testing & Build Validation: Menjalankan seluruh rangkaian pengujian unit test dan memastikan build APK berhasil pada setiap commit di branch main.

πŸ“„ Lisensi & Privasi

Aplikasi ini dilindungi di bawah kebijakan privasi lokal. Untuk informasi lebih lanjut mengenai penanganan data notifikasi, silakan baca PRIVACY.md dan SECURITY.md.


Dibuat oleh Adrian Syah Abidin

About

πŸ”” Privacy-first Android local notification history & media archiving app. Built with Jetpack Compose, Material 3, Clean Architecture, Room, Hilt, and DevSecOps best practices. (Zero-Internet, 100% Offline)

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages