Skip to content

anas34b/FlightTrackerApp

Repository files navigation

FlightTrackerApp

Application Android native de suivi des vols commerciaux en temps réel, développée en Kotlin et Jetpack Compose dans le cadre du projet de fin de module Android.

Dépôt GitHub : https://github.com/anas34b/FlightTrackerApp

Téléchargement ZIP : https://github.com/anas34b/FlightTrackerApp/archive/refs/heads/main.zip (ou via le bouton vert « Code → Download ZIP » sur la page GitHub)

✈️ Fonctionnalités

  • Liste des vols au départ ou à l'arrivée d'un aéroport
  • Toggle Départs / Arrivées (segmented control)
  • Recherche multi-modes :
    • Par code IATA d'aéroport (ex: CDG, LHR)
    • Par nom de ville (ex: Toulouse, Londres, New York) — ~80 villes mappées
    • Par numéro de vol (ex: AF1234)
  • Filtres rapides : aéroports populaires (CDG, LHR, JFK, DXB, AMS, LAX)
  • Écran de détail avec horaires, terminal, porte, retard, statut coloré
  • Liste des compagnies aériennes (avatar initiale + pays + code IATA)
  • Cache en mémoire pour économiser les requêtes API
  • Bouton 🔄 Actualiser pour forcer le re-fetch
  • Mode sombre automatique selon le réglage système

🏗️ Architecture

Architecture MVVM stricte en 4 couches :

Composables  →  ViewModel  →  Repository  →  RetrofitInstance  →  AviationStack API
   (UI)        (StateFlow)    (suspend fun)    (Singleton)
  • Single Activity + Navigation Compose avec passage d'argument dynamique (navArgument("flightId") { type = NavType.StringType })
  • Coroutines : suspend fun + viewModelScope.launch
  • Material 3 exclusivement, palette aviation personnalisée (light + dark)
  • Aucune string en dur dans les .kt (tout via stringResource(R.string.xxx))

🛠️ Stack technique

Catégorie Choix
Langage Kotlin 1.9.22
UI Jetpack Compose (BOM 2024.02.00) + Material 3
Navigation Navigation Compose 2.7.6
Réseau Retrofit 2.9.0 + Gson
Logging OkHttp Logging Interceptor 4.12.0
Async Kotlin Coroutines 1.7.3
Build Gradle 8.7 + AGP 8.2.2
Min SDK 24 (Android 7.0)
Target SDK 34 (Android 14)

🌐 API consommée

AviationStack — plan gratuit (100 requêtes/mois)

  • GET /flights — vols filtrés par dep_iata / arr_iata / flight_iata
  • GET /airlines — liste des compagnies

L'API étant en HTTP (pas HTTPS), le manifest active android:usesCleartextTraffic="true".

🔑 Quota API épuisé ? Régénérer la clé

Le plan gratuit AviationStack est limité à 100 requêtes par mois. Si plusieurs personnes lancent l'app (ex: lors de la correction), le quota partagé peut être atteint avant la fin du mois. Dans ce cas, l'app affichera un écran d'erreur "Erreur réseau" avec un message du type « You have exceeded your monthly API request limit ».

Comment générer une nouvelle clé (gratuit, 2 min)

  1. Aller sur https://aviationstack.com/signup/free
  2. Créer un compte (email + mot de passe, pas de carte bancaire demandée)
  3. Une fois connecté, le dashboard affiche "Your API Access Key" — copier la chaîne de caractères (ex: abcdef1234567890abcdef1234567890)

Où coller la nouvelle clé

Ouvrir le fichier app/src/main/java/com/example/flighttracker/network/RetrofitInstance.kt et remplacer la valeur de API_KEY :

const val API_KEY = "fbad45a163cd849b1bf6f19818d8bcc8"  // ← coller la nouvelle clé ici

Puis Build → Clean Project et relancer ▶. C'est tout.

▶️ Lancement

  1. Ouvrir le projet dans Android Studio (Hedgehog ou plus récent)
  2. Laisser Gradle synchroniser (~2 min au premier lancement)
  3. Sélectionner un émulateur (API 24+) ou un appareil physique
  4. Cliquer sur Run

📁 Structure du projet

app/src/main/java/com/example/flighttracker/
├── MainActivity.kt
├── network/          ← Retrofit, service, modèles Gson
├── data/             ← Repository, cache, mapping ville→IATA, SearchMode
├── viewmodel/        ← FlightViewModel, FlightDetailViewModel, UiState
└── ui/
    ├── navigation/   ← AppNavGraph
    ├── screens/      ← 3 écrans Compose
    ├── components/   ← FlightCard réutilisable
    └── theme/        ← Color, Theme, Type

📚 Documentation détaillée

Le dossier docs/ contient :

👤 Auteur

Projet réalisé par Anas Daoui dans le cadre du cours Android natif.

About

Android app built with Kotlin & Jetpack Compose consuming AviationStack API. MVVM architecture, Navigation Compose, Coroutines, Material Design 3.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages