Bruno Charest 173f9a6d0b feat: expand catalog seed data with comprehensive multi-domain item library covering 11 domains and 1000+ items with French/English aliases
- Expand from 418 to 3817 lines with detailed item definitions across grocery, pharmacy, hardware, technology, clothing, home, pets, auto, leisure, cleaning, gifts, and office domains
- Add extensive French item names with English aliases for bilingual search support
- Include emoji icons, color codes, sort orders, and tags for all domains, categories, and items
- Add specialized
2026-04-29 13:25:05 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00
2026-04-25 10:26:13 -04:00

SafeBite

SafeBite est une application Android native (Kotlin + Jetpack Compose) qui permet aux personnes souffrant d'allergies ou d'intolérances alimentaires de scanner un code-barres en épicerie et d'obtenir instantanément un verdict visuel (SAFE / ATTENTION / DANGER) selon leurs profils d'allergies configurés.


Fonctionnalités

  • Profils d'allergies multiples : allergies sévères (DANGER), intolérances modérées (ATTENTION), restrictions alimentaires, plusieurs profils simultanés.
  • Scanner de code-barres via CameraX + ML Kit (EAN-13/8, UPC-A/E, QR).
  • Open Food Facts API v2 pour les données produits + cache local hors-ligne (Room).
  • OCR pour lire les listes d'ingrédients quand le produit est introuvable (Google ML Kit Text Recognition, entièrement sur l'appareil).
  • Moteur d'analyse 3 couches : tags OFF → ingrédients → mentions "peut contenir / may contain" (FR + EN).
  • Historique filtrable et recherchable.
  • Paramètres : langue FR/EN, langue de détection, thème (clair/sombre/système), vibration, son.
  • Onboarding guidé au premier lancement.

Stack technique

Domaine Technologie
Langage / Build Kotlin 2.0.20, AGP 8.5.2, Gradle 8.9, JDK 17
UI Jetpack Compose (BOM 2024.09.02), Material 3
Architecture MVVM + Clean Architecture (domain / data / presentation)
DI Hilt 2.52
Base locale Room 2.6.1 + KSP
Préférences DataStore Preferences 1.1.1
Réseau Retrofit 2.11 + OkHttp 4.12 + Moshi 1.15
Caméra CameraX 1.3.4
ML Kit Barcode Scanning 17.3.0, Text Recognition 16.0.1
Navigation Navigation Compose 2.8.1
Images Coil 2.7.0
Logs Timber 5.0.1
  • minSdk 26 (Android 8.0), targetSdk 34 (Android 14).

Structure du projet

com.safebite.app/
├── di/                       # Modules Hilt
├── data/
│   ├── local/                # Room database + DataStore
│   ├── remote/               # OpenFoodFactsApi + DTO + mapper
│   ├── repository/           # Implémentations des repositories
│   └── util/                 # ConnectivityObserver
├── domain/
│   ├── model/                # UserProfile, Product, AllergenType, ScanResult, etc.
│   ├── engine/               # AllergenAnalysisEngine (moteur 3 couches)
│   ├── repository/           # Interfaces
│   └── usecase/              # Cas d'usage
└── presentation/
    ├── navigation/           # NavGraph + Screen
    ├── theme/                # Color, Theme, Type, Shape
    ├── common/               # UiState + composants partagés
    ├── screen/               # onboarding, home, scanner, result, ocr, profile, history, settings
    └── MainActivity.kt

Build & Run

Pré-requis

  • Android Studio Koala Feature Drop (2024.1.2) ou plus récent, avec JDK 17.
  • Un appareil physique Android 8.0+ avec caméra (l'émulateur avec caméra virtuelle fonctionne pour l'UI, pas pour le scan réel).

Compiler et installer

Le projet inclut le Gradle Wrapper pour assurer la reproductibilité des builds.

.\gradlew assembleDebug
.\gradlew installDebug

Tests unitaires

.\gradlew test

Les tests du moteur d'analyse se trouvent dans app/src/test/java/com/safebite/app/domain/engine/AllergenAnalysisEngineTest.kt.

Générer les APKs

Le script build_apks.ps1 (PowerShell) permet de compiler les versions Debug et Release de l'application, et d'incrémenter automatiquement la version de l'application.

Utilisation :

.\build_apks.ps1 [-Major | -Minor | -Patch]

Options :

  • -Major : Incrémente la version majeure (X.0.0) et réinitialise les versions mineure et de patch.
  • -Minor : Incrémente la version mineure (x.Y.0) et réinitialise la version de patch.
  • -Patch : Incrémente la version de patch (x.y.Z).
  • Si aucune option n'est spécifiée, le script utilise la version actuelle pour la compilation.
  • .\build_apks.ps1 -Help : Affiche ce message d'aide.

Les fichiers APK générés se trouvent dans les dossiers suivants :

  • Debug : app\build\outputs\apk\debug\app-debug.apk
  • Release : app\build\outputs\apk\release\app-release.apk

Permissions

Permission Usage
CAMERA Scan de codes-barres et capture OCR (demandée à l'utilisateur).
INTERNET, ACCESS_NETWORK_STATE Requêtes Open Food Facts.
VIBRATE Feedback haptique au scan réussi.

Aucune image n'est jamais envoyée hors de l'appareil : le scan de code-barres et l'OCR tournent intégralement sur l'appareil via ML Kit.


Attribution

Les données produits proviennent de Open Food Facts, une base de données collaborative ouverte.


Avertissement important

SafeBite est un outil d'aide. Il ne remplace pas la lecture attentive de l'étiquette. Les données peuvent être incomplètes ou inexactes. En cas de doute, ne consommez pas le produit. En cas de réaction allergique, appelez le 911.

Description
SafeBite
Readme 16 MiB
Languages
Kotlin 96.1%
Python 3.5%
PowerShell 0.4%