Skip to content
AybarsBarutPublic

About

Offline-first Android medication reminder, dose tracker, and pharmacy stock manager built with Kotlin, Jetpack Compose, Room DB, WorkManager, and Material Design 3.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

İlacım Cepte

Android 11 ve sonrası için tamamen çevrimdışı ilaç hatırlatma ve stok uygulaması.

Durum

  • Room tabanlı ilaç, program, doz geçmişi ve stok verileri hazır.
  • AlarmManager, yeniden başlatma/saat dilimi alıcıları ve kaçırılan doz WorkManager akışı hazır.
  • Fotoğraf ve prospektüsler uygulamanın özel yerel dosya alanına alınıyor.
  • İlaç verileri cihazdan çıkmaz; internet yalnızca GitHub tabanlı sürüm kontrolü ve kullanıcının başlattığı APK indirmesi için kullanılır.
  • Kolay ve anlaşılabilir frontend.
  • İlaç ekleme/düzenleme akışı erişilebilir yedi adımlı bir sihirbazdır.
  • Yerel ZIP yedekleme ve geri yükleme; ilaçları, programları, geçmişi, tercihleri ve yerel medyayı kapsar.

Araç zinciri

  • Kotlin 2.2.0
  • Jetpack Compose + Material 3
  • Room 2.8.4
  • WorkManager 2.11.2
  • minSdk 30, compileSdk/targetSdk 36

Derleme

Android Studio'nun JDK 17 veya daha yeni sürümüyle:

.\gradlew.bat :app:assembleDebug

Windows'ta proje yolundaki Türkçe ı karakteri JDK birim test sınıf yolunu etkilerse projeyi geçici olarak ASCII bir sürücü harfine eşleyerek test edin.

Doğrulama

.\gradlew.bat :app:testDebugUnitTest :app:lintDebug

Doz işlemleri tek seferliktir; ilk Aldım/Atla eylemi kazanır. Aldım stoğu Room işlemi içinde atomik olarak azaltır.

Self Update System

Uygulama Google Play, Firebase, Supabase, VPS, özel backend, GitHub Actions veya uygulama içinde GitHub token'ı kullanmadan güncellenir. Public kaynak ve dağıtım repository'si:

  • Manifest: https://raw.githubusercontent.com/AybarsBarut/PillTrack/main/update.json
  • Releases: https://github.com/AybarsBarut/PillTrack/releases
  • Uygulamadaki tek endpoint: update-config.properties içindeki manifestUrl

Otomatik kontrol uygulama prosesi başladığında yapılır ve başarılı kontrolden sonra altı saat önbelleğe alınır. Cihazda Android tarafından doğrulanmış internet bağlantısı yoksa ağ isteği hiç başlatılmaz. Ayarlar'daki Güncellemeleri kontrol et seçeneği önbelleği atlar; çevrimdışsa yalnızca kullanıcıyı bilgilendirir.

Güncelleme kararı yalnızca sayısal versionCode ile verilir. APK indirildikten sonra kurulumdan önce dosya boyutu, SHA-256, Android paket adı, APK versionCode değeri ve yüklü uygulamanın imza sertifikasıyla eşleşmesi doğrulanır. Başarısız dosya silinir. Kurulum FileProvider tarafından verilen geçici content:// URI ile Android paket yükleyicisine devredilir; sessiz kurulum yapılmaz.

Gerekli Android izinleri:

  • INTERNET: manifest ve kullanıcının başlattığı APK indirmesi
  • ACCESS_NETWORK_STATE: internetsizken kontrolü başlatmamak
  • REQUEST_INSTALL_PACKAGES: Android'in kullanıcı onaylı paket yükleyicisini açmak

Cleartext HTTP kapalıdır (usesCleartextTraffic=false); manifest ve APK adresleri HTTPS olmak zorundadır.

İlk release kurulumu

  1. AybarsBarut/PillTrack repository'sini public tutun. Kaynak kod ve update.json ana branch'te, kurulabilir app-release.apk ise Releases bölümünde bulunur.
  2. Release imza anahtarını repository dışında güvenli bir yerde oluşturun/saklayın. keystore.properties.example dosyasını keystore.properties adıyla kopyalayıp gerçek yolu, alias'ı ve parolaları doldurun. Bu dosya Git tarafından yok sayılır.
  3. app/build.gradle.kts içindeki versionCode ve versionName değerlerini artırın.
  4. Yerel release paketini hazırlayın:
.\tools\prepare-release.ps1 -Changelog "Performans iyileştirmeleri","Bildirim sistemi düzeltildi"

Kökteki .\build-release.ps1 aynı script için kısa yoldur. Script GitHub'a hiçbir şey yüklemez ve gh gerektirmez. İmzayı doğruladıktan sonra şunları oluşturur:

release-output/
├── app-release.apk
├── update.json
└── release-info.txt
  1. GitHub'da AybarsBarut/PillTrack → Releases → Create a new release yolunu açın.
  2. Tag'i vX.Y.Z olarak oluşturun; tag, Android versionName ile aynı olmalıdır.
  3. release-output/app-release.apk dosyasını release asset'i olarak yükleyip release'i yayınlayın.
  4. release-output/update.json içeriğini PillTrack repository'sinin ana branch'indeki update.json ile değiştirip commit/push yapın.
  5. Raw update.json URL'sini tarayıcıda açıp yeni versionCode, APK URL'si, boyut ve SHA-256 değerlerini kontrol edin.

Tüm release APK'ları ilk sürümden itibaren aynı signing key ile imzalanmalıdır. .jks, .keystore, keystore.properties, parolalar ve private key repository'ye veya APK içine eklenmemelidir.

Dağıtım manifesti

prepare-release.ps1 aşağıdaki yapıda gerçek boyut ve SHA-256 içeren JSON üretir:

{
  "versionCode": 8,
  "versionName": "1.3.0",
  "minimumVersionCode": 1,
  "forceUpdate": false,
  "apkUrl": "https://github.com/AybarsBarut/PillTrack/releases/download/v1.3.0/app-release.apk",
  "sha256": "AEE2973FF1354E5F5A0CF5511F33AF5E31B1C122A6D444FA6C8E7E0BF8E2C628",
  "fileSize": 3344403,
  "releaseDate": "2026-08-22",
  "changelog": [
    "Minimalist yazı boyutu seçeneği eklendi",
    "Sıradaki ilaç dozunu gösteren Android ana ekran widgetı eklendi",
    "Widget ilaç planı, alarm ve saat değişikliklerinde otomatik yenileniyor"
  ]
}

forceUpdate=true veya yerel versionCode < minimumVersionCode olduğunda diyalog kapatılamaz. Normal bir güncellemede Daha sonra seçimi o versionCode için saklanır; daha yeni bir sürüm yayınlandığında bildirim yeniden gösterilir.

About

Offline-first Android medication reminder, dose tracker, and pharmacy stock manager built with Kotlin, Jetpack Compose, Room DB, WorkManager, and Material Design 3.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages