Application Android conçue pour vous aider à gérer votre stock de médicaments et vous notifier à l'avance lorsqu'il est temps de passer à la pharmacie pour renouveler vos traitements.
Find a file
2026-07-19 16:09:23 +02:00
.idea Android Gradle plugin update 2026-07-18 15:55:41 +02:00
app Logique automatique de prise de médicament 2026-07-19 16:09:23 +02:00
gradle Android Gradle plugin update 2026-07-18 15:55:41 +02:00
.gitignore premier commit 2026-07-15 21:13:13 +02:00
build.gradle.kts premier commit 2026-07-15 21:13:13 +02:00
build_output.txt premier commit 2026-07-15 21:13:13 +02:00
gradle.properties premier commit 2026-07-15 21:13:13 +02:00
gradlew premier commit 2026-07-15 21:13:13 +02:00
gradlew.bat premier commit 2026-07-15 21:13:13 +02:00
output.txt premier commit 2026-07-15 21:13:13 +02:00
Pixel-7-Android-17_2026-07-15_205107.logcat premier commit 2026-07-15 21:13:13 +02:00
README.md Logique automatique de prise de médicament 2026-07-19 16:09:23 +02:00
settings.gradle.kts premier commit 2026-07-15 21:13:13 +02:00

💊 MedicAlert - Gestion de Stock de Médicaments

MedicAlert est une application Android conçue pour vous aider à gérer votre stock de médicaments et vous notifier à l'avance lorsqu'il est temps de passer à la pharmacie pour renouveler vos traitements.


📌 Fonctionnalités

Fonctionnalité Description
Gestion des médicaments Ajoutez, modifiez et supprimez vos médicaments avec leur nom, posologie et couleur
Gestion des boîtes Ajoutez des boîtes de médicaments avec une quantité initiale. Un médicament peut avoir plusieurs boîtes associées
Sélection intelligente Lors de l'ajout d'une boîte, choisissez un médicament existant (posologie et couleur pré-remplies) ou créez-en un nouveau
Sélecteur de couleur visuel Choisissez la couleur parmi une palette de 14 couleurs prédéfinies (pas besoin de code hexadécimal)
Suivi automatique du stock Le stock diminue automatiquement chaque jour selon la posologie
Calcul des jours restants L'application calcule combien de jours de traitement il vous reste
Tri intelligent Les médicaments sont triés par jours restants (le plus urgent en premier), puis par nom
Notifications intelligentes Recevez une alerte 3 jours (configurable) avant la rupture de stock
Seuil personnalisable Modifiez le seuil de notification dans les paramètres (1 à 30 jours)
Gestion des dates de péremption Affichez et gérez les dates de péremption de vos boîtes

🛠 Stack Technique

Technologie Version Utilisation
Kotlin 1.11 Langage principal
Jetpack Compose 2026.02.01 UI moderne et réactive
Room Database 2.6.0 Base de données locale SQLite
WorkManager 2.9.0 Notifications et décrémentation automatique quotidienne
Navigation Compose 2.7.4 Navigation entre écrans
ViewModel 2.6.2 Architecture MVVM
Coroutines 1.7.3 Asynchrone et thread-safe

📦 Structure du Projet

MedicAlert/
├── app/
│   ├── src/main/
│   │   ├── java/com/example/medicalert/
│   │   │   ├── model/              # Modèles de données (Medicament, Boite, Alerte)
│   │   │   ├── database/           # Room (AppDatabase, DAOs, Converters)
│   │   │   ├── repository/         # MedicamentRepository (logique métier)
│   │   │   ├── viewmodel/          # MedicamentViewModel
│   │   │   ├── worker/             # RuptureStockWorker (décrémentation + notifications)
│   │   │   ├── ui/
│   │   │   │   ├── screens/        # Écrans Compose
│   │   │   │   │   ├── AddMedicamentScreen.kt  # Ajout de boîtes
│   │   │   │   │   ├── MedicamentListScreen.kt # Liste triée par urgence
│   │   │   │   │   ├── MedicamentDetailScreen.kt
│   │   │   │   │   └── SettingsScreen.kt
│   │   │   │   ├── components/     # Composants réutilisables (MedicamentCard, ColorPicker)
│   │   │   │   └── theme/          # Thème Material 3 et palette de couleurs
│   │   │   ├── MedicAlertApplication.kt
│   │   │   └── MainActivity.kt
│   │   └── AndroidManifest.xml
│   └── build.gradle.kts
├── gradle/
│   └── libs.versions.toml       # Version Catalog
└── README.md

📥 Prérequis

  • Android Studio (version Giraffe 2022.3.1 ou supérieure)
  • Java JDK 17 (recommandé)
  • Gradle 9.2.0 (inclus avec Android Studio)
  • Android SDK 26+ (minSdk = 26)

🚀 Installation

1. Cloner le projet

git clone https://github.com/ton-username/MedicAlert.git
cd MedicAlert

2. Ouvrir dans Android Studio

  • Lance Android Studio
  • File > Open et sélectionnez le dossier MedicAlert
  • Android Studio synchronisera automatiquement les dépendances Gradle

3. Configurer l'émulateur

  • Tools > Device Manager > Create Virtual Device
  • Sélectionnez Pixel 5 (ou autre)
  • Choisissez Android 13 (Tiramisu) ou supérieur
  • Cliquez sur Finish

4. Builder et lancer

  • Cliquez sur Sync Project with Gradle Files (icône éléphant ⬆️)
  • Build > Make Project (Ctrl+F9)
  • Run > Run 'app' (Shift+F10)
  • Sélectionnez votre émulateur ou appareil connecté

📱 Utilisation

🔹 Première utilisation

  1. L'application démarre sur l'écran "Mes Médicaments" (vide)
  2. Cliquez sur + pour ajouter votre première boîte de médicament

🔹 Ajouter une boîte de médicament

  1. Cliquez sur + (bouton flottant)
  2. Remplissez le formulaire :
    • Nom du médicament : Saisissez le nom ou sélectionnez un médicament existant dans le menu déroulant
    • Quantité dans la boîte : Nombre de comprimés/gélules dans cette boîte (ex: 30)
    • Posologie : Nombre de comprimés par jour (pré-rempli si médicament existant, ex: 2)
    • Couleur : Sélectionnez une couleur dans la palette visuelle (pré-remplie si médicament existant)
  3. Cliquez sur "Ajouter la boîte"
    • Si le médicament existe déjà : une nouvelle boîte est ajoutée à ce médicament
    • Si le médicament n'existe pas : un nouveau médicament est créé avec une première boîte

🔹 Modifier un médicament

  1. Dans la liste, cliquez sur (3 points) à côté du médicament
  2. Sélectionnez "Modifier"
  3. Modifiez le nom, la posologie ou la couleur
  4. Cliquez sur "Enregistrer"

🔹 Supprimer un médicament

  1. Dans la liste, cliquez sur (3 points) à côté du médicament
  2. Sélectionnez "Supprimer"
  3. Confirmez la suppression

🔹 Configurer les notifications

  1. Cliquez sur ⚙️ Paramètres (en haut à droite)
  2. Ajustez le seuil de notification avec le slider (1 à 30 jours)
  3. Les médicaments avec ≤ X jours de stock auront un fond rouge

🔹 Recevoir les notifications

  • L'application vérifie automatiquement toutes les 24 heures et décrémente le stock
  • Une notification est envoyée quand un médicament approche de la rupture
  • Astuce : Pour tester immédiatement, modifiez le code dans RuptureStockWorker.kt :
    PeriodicWorkRequestBuilder<RuptureStockWorker>(
        1,  // ⬅️ 1 minute au lieu de 24 heures
        TimeUnit.MINUTES
    )
    

🎨 Capture d'écran (à venir)

Écran Description
Liste Liste des médicaments triée par urgence (jours restants)
Ajout Formulaire d'ajout de boîte avec sélecteur de médicament et palette de couleurs
Détails Détails du médicament avec gestion des boîtes
Paramètres Configuration du seuil de notification

📊 Base de Données

Modèle de données

// Médicament
@Entity(tableName = "medicaments")
data class Medicament(
    @PrimaryKey(autoGenerate = true) val id: Long = 0,
    val nom: String,
    val posologie: Int,       // comprimés/jour
    val couleur: String,      // code hex (ex: #FF5722)
    val dateCreation: LocalDate
)

// Boîte
@Entity(tableName = "boites")
data class Boite(
    @PrimaryKey(autoGenerate = true) val id: Long = 0,
    val medicamentId: Long,    // Lien vers Medicament (ForeignKey)
    val quantiteInitiale: Int,
    val quantiteRestante: Int,
    val datePeremption: LocalDate?
)

// Alerte (calculée)
data class Alerte(
    val medicamentId: Long,
    val nomMedicament: String,
    val joursRestants: Int,
    val dateRupture: LocalDate
)

Schémas de calcul

Stock total = Σ(boîtes.quantiteRestante) pour un médicament
Jours restants = Stock total ÷ Posologie

Si jours restants ≤ seuil :
    → Afficher alerte visuelle (fond rouge)
    → Envoyer notification push

Tri de la liste :
    1. Par jours restants (ascendant) - le plus urgent en premier
    2. Par nom (alphabétique) en cas d'égalité

🔧 Architecture

┌─────────────────────────────────────────────────┐
│                     UI (Compose)                 │
├─────────────────────────────────────────────────┤
│  MedicamentListScreen  MedicamentDetailScreen   │
│  AddMedicamentScreen     SettingsScreen          │
├─────────────────────────────────────────────────┤
│  Composants: MedicamentCard, ColorPicker        │
└───────────────────────────┬─────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────┐
│                  ViewModel                     │
├─────────────────────────────────────────────────┤
│  MedicamentViewModel (StateFlow, Coroutines)    │
└───────────────────────────┬─────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────┐
│                 Repository                       │
├─────────────────────────────────────────────────┤
│  MedicamentRepository (logique métier)           │
└───────────────────────────┬─────────────────────────┘
                            │
            ┌───────────────────┼───────────────────┐
            ▼                   ▼                   ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│  Room Database  │ │  WorkManager    │ │   Preferences   │
│  (SQLite)       │ │  (Notifications) │ │   (Paramètres)   │
└─────────────────┘ └─────────────────┘ └─────────────────┘

🤝 Contribution

Les contributions sont les bienvenues !

  1. Fork le projet
  2. Créez une branche (git checkout -b feature/ma-fonctionnalité)
  3. Commitez vos changements (git commit -m 'Ajout de ma fonctionnalité')
  4. Poussez sur la branche (git push origin feature/ma-fonctionnalité)
  5. Ouvrez une Pull Request

📜 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.


🙏 Remerciements

  • Android Developer Documentation
  • Jetpack Compose Team
  • Room Database Team
  • Stack Overflow Community

📧 Contact

Pour toute question ou suggestion :


© 2024 MedicAlert - Gestion intelligente de vos médicaments