Skip to content
@TDM-PROJET

TDM-PROJET

AirIn — Airline Online Check-In App

AirIn is a full-stack airline online check-in system that lets passengers complete their check-in remotely, before arriving at the airport. Through the app, travelers confirm their identity by scanning their passport, choose their preferred seat, declare their baggage, and get a digital boarding pass — with full offline support.

This organization hosts both parts of the project:

Repository Description
AirIn-mobile Native Android app (Kotlin, Jetpack Compose, MVVM)
AirIn-backend REST API (Django)

✈️ Features

  • Registration
    • Sign up with name, email, phone number, and password
    • Quick sign-in with Google account
  • Flight Lookup & Booking Retrieval
    • Retrieve itinerary and current check-in status via booking reference + last name
  • Online Check-In (available from 24h before departure)
    • Passport Scan — OCR extracts identity data from the passport's first page and verifies it against the booking
    • Details Review — passenger confirms personal and travel information
    • Seat Selection — interactive aircraft seat map (available / occupied / premium)
    • Baggage Declaration — number and type of checked bags
    • Special Requests — dietary preferences, assistance needs, infant/pet declarations
    • Confirmation notification sent on completion
  • QR Code Boarding Pass
    • Digital boarding pass with a unique QR code, scannable at baggage drop, security, and boarding gate
    • PDF Boarding Pass — downloadable, includes a flight summary
  • Offline Mode & Synchronization
    • Flight details and boarding passes cached locally, accessible without internet
    • Automatic sync with the server when connectivity is restored

🏗️ System Architecture

  • Mobile app follows MVVM: Compose UI observes StateFlow from ViewModels, which delegate to repositories that arbitrate between the Django API (Retrofit) and a local Room cache for offline access.
  • Backend exposes a REST API for auth, flight/booking lookup, the check-in workflow, and boarding pass generation, and dispatches push notifications via FCM.
  • FCM ties the two together: the backend triggers pushes (check-in confirmation, flight/status updates) to the mobile app.

🛠️ Tech Stack

Mobile (AirIn-mobile)

  • Language: Kotlin
  • UI: Jetpack Compose
  • Architecture: MVVM
  • Async: Coroutines & Flow
  • Networking: Retrofit + OkHttp
  • Offline Cache: Room
  • Push: Firebase Cloud Messaging (FCM)
  • Auth: Google Sign-In
  • Passport OCR: CameraX + ML Kit
  • QR Code: ZXing
  • PDF Generation: Android PdfDocument
  • DI: Hilt

Backend (AirIn-backend)

  • Framework: Django + Django REST Framework
  • Database: PostgreSQL
  • Auth: JWT + Google OAuth verification
  • Push: Firebase Cloud Messaging (FCM)
  • PDF Generation: ReportLab
  • QR Code: qrcode (Python)

🚀 Getting Started

1. Backend

git clone https://github.com/TDM-PROJET/AirIn-backend.git
cd AirIn-backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt

Configure .env:

SECRET_KEY=your-secret-key
DEBUG=True
DATABASE_URL=postgres://user:password@localhost:5432/airin
FIREBASE_CREDENTIALS_PATH=path/to/firebase-adminsdk.json
GOOGLE_OAUTH_CLIENT_ID=your-google-client-id

Run migrations and start the server:

python manage.py migrate
python manage.py runserver

2. Mobile App

git clone https://github.com/TDM-PROJET/AirIn-mobile.git
  • Add google-services.json to the app/ module.
  • Point the app at your backend, in app/src/main/java/com/example/airin_mobile/network/NetworkConstants.kt:
    API_BASE_URL=http://<your-backend-host>:8000/api/
  • Open in Android Studio, sync Gradle, and run.

📶 Offline Behavior

  • Boarding pass, itinerary, and check-in status are persisted locally on the device (Room).
  • A connectivity observer triggers a background sync when the device reconnects.
  • Users can view their boarding pass and flight info fully offline.

📄 Project Context

Developed as the final project for 2CS SIL — Techniques de Développement Mobile, École nationale Supérieure d'Informatique (ESI).

📄 License

Academic project — for educational purposes.

Popular repositories Loading

  1. AirIn-backend AirIn-backend Public

    Python 1

  2. AirIn-mobile AirIn-mobile Public

    Kotlin 2

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…