Skip to content

BungChoi/e_porter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

92 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

E-Porter πŸ›«

Sistem Aplikasi E-Porter Berbasis Mobile untuk Meningkatkan Jasa Prioritas Bandara

E-Porter adalah aplikasi mobile Flutter yang dirancang untuk meningkatkan efisiensi layanan porter di bandara melalui digitalisasi proses pemesanan tiket dan manajemen layanan prioritas.

πŸ“± Screenshots

Screenshots aplikasi akan ditambahkan di sini

✨ Fitur Utama

🎫 Pemesanan Tiket

  • Pencarian dan pemilihan penerbangan
  • Pemilihan kursi (seat) secara real-time
  • Manajemen data penumpang
  • Sistem pembayaran dengan QRIS

🧳 Layanan Porter

  • Porter VIP: Pengalaman perjalanan tanpa repot
  • Fast Track: Cocok untuk jadwal padat
  • Transit Service: Khusus untuk penerbangan transit
  • QR Code scanner untuk memanggil porter terdekat

πŸ’³ Sistem Pembayaran

  • Payment timer dengan countdown real-time
  • Upload bukti pembayaran
  • Tracking status transaksi
  • Riwayat pembayaran lengkap

πŸ“Š Dashboard & Monitoring

  • Real-time status tracking
  • Notifikasi transaksi kedaluwarsa
  • Sistem pembatalan otomatis
  • Boarding pass digital

πŸ—οΈ Arsitektur

Aplikasi ini menggunakan Clean Architecture dengan pembagian layer:

lib/
β”œβ”€β”€ presentation/           # UI Layer
β”‚   β”œβ”€β”€ screens/           # Flutter Screens
β”‚   └── controllers/       # GetX Controllers
β”œβ”€β”€ domain/                # Business Logic Layer
β”‚   β”œβ”€β”€ usecases/         # Business Use Cases
β”‚   β”œβ”€β”€ models/           # Data Models
β”‚   └── repositories/     # Repository Interfaces
β”œβ”€β”€ data/                 # Data Layer
β”‚   └── repositories/     # Repository Implementations
└── _core/
    └── service/          # Background Services

πŸ› οΈ Tech Stack

Frontend

  • Flutter - Cross-platform mobile framework
  • GetX - State management dan dependency injection
  • Dart - Programming language

Backend & Database

  • Firebase Firestore - Primary database untuk data utama
  • Firebase Realtime Database - Real-time synchronization
  • Firebase Storage - File storage untuk bukti pembayaran
  • Firebase Authentication - User authentication

Architecture Pattern

  • Clean Architecture - Separation of concerns
  • Repository Pattern - Data access abstraction
  • UseCase Pattern - Business logic encapsulation

πŸ“‹ Prasyarat

  • Flutter SDK >= 3.0.0
  • Dart SDK >= 3.0.0
  • Android Studio / VS Code
  • Firebase account dan project setup

πŸš€ Instalasi

  1. Clone repository
git clone https://github.com/orangdeso/e_porter.git
cd e_porter
  1. Install dependencies
flutter pub get
  1. Setup Firebase

    • Buat project Firebase baru
    • Download google-services.json untuk Android
    • Download GoogleService-Info.plist untuk iOS
    • Tempatkan file konfigurasi di direktori yang sesuai
  2. Konfigurasi Firebase

# Install Firebase CLI
npm install -g firebase-tools

# Login ke Firebase
firebase login

# Inisialisasi Firebase di project
firebase init
  1. Setup Firestore Rules
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Rules untuk collection tickets
    match /tickets/{ticketId} {
      allow read, write: if request.auth != null;
      
      match /payments/{paymentId} {
        allow read, write: if request.auth != null;
      }
    }
    
    // Rules untuk collection bandara
    match /bandara/{bandaraId} {
      allow read: if true;
    }
  }
}
  1. Setup Realtime Database Rules
{
  "rules": {
    "transactions": {
      "$userId": {
        ".read": "$userId === auth.uid",
        ".write": "$userId === auth.uid"
      }
    }
  }
}
  1. Run aplikasi
flutter run

πŸ“± Platform Support

Platform Status
Android βœ… Supported
iOS βœ… Supported
Web 🚧 In Development

πŸ—„οΈ Struktur Database

Firestore Collections

tickets/{ticketId}

{
  status: "pending_payment" | "awaiting_verification" | "verified" | "expired",
  lastUpdated: timestamp,
  userId: "user_id",
  
  // Sub-collection: flights
  flights/{flightId}: {
    airLines: "Lion Air",
    code: "22",
    seat: {
      a: { isTaken: [false, true, false, ...], totalSeat: 10 },
      b: { isTaken: [false, true, false, ...], totalSeat: 10 },
      // ... kelas f
    }
  },
  
  // Sub-collection: payments
  payments/{paymentId}: {
    id: "payment_id",
    amount: 1010000,
    method: "QRIS",
    status: "pending" | "paid" | "verified" | "cancelled",
    expiryTime: timestamp,
    proofUrl: "url_bukti_pembayaran",
    // ... data lainnya
  }
}

bandara/{bandaraId}

{
  id: "document_id",
  city: "Jakarta",
  code: "CGK", 
  name: "Soekarno-Hatta International Airport"
}

Realtime Database Structure

{
  "transactions": {
    "{userId}": {
      "{ticketId}": {
        "{transactionId}": {
          "payment": { /* payment data */ },
          "flight": { /* flight data */ },
          "bandara": { /* airport data */ },
          "user": { /* user data */ },
          "passenger": 1,
          "passengerDetails": [],
          "numberSeat": []
        }
      }
    }
  }
}

πŸ”„ Flow Aplikasi

1. Pemesanan Tiket

User memilih tiket β†’ Pilih layanan porter β†’ Pilih penumpang β†’ Review pesanan β†’ Buat transaksi

2. Proses Pembayaran

Generate QRIS β†’ Timer countdown β†’ Upload bukti β†’ Verifikasi admin β†’ Tiket confirmed

3. Manajemen Kursi

Pilih kursi β†’ Update status "taken" β†’ Jika expired β†’ Reset ke "available"

πŸ§ͺ Testing

Black Box Testing

Aplikasi telah diuji menggunakan metode Equivalence Partitioning dengan tingkat keberhasilan 100%.

# Run unit tests
flutter test

# Run integration tests
flutter drive --target=test_driver/app.dart

🎯 Roadmap

Phase 1 (Current) βœ…

  • Basic booking system
  • Payment integration
  • Seat management
  • Transaction expiry system

Phase 2 (In Progress) 🚧

  • Push notifications
  • Payment gateway integration
  • Real-time airport data integration
  • Geofencing for porter location

Phase 3 (Planned) πŸ“‹

  • Admin dashboard
  • Analytics & reporting
  • Multi-language support
  • Offline mode support

🀝 Contributing

  1. Fork repository
  2. Buat feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buka Pull Request

Code Style

  • Gunakan dart format untuk formatting
  • Ikuti Effective Dart guidelines
  • Tambahkan documentation untuk public APIs

πŸ› Bug Reports

Jika menemukan bug, silakan buat issue dengan template:

**Describe the bug**
Deskripsi singkat tentang bug

**To Reproduce**
Langkah-langkah untuk reproduce:
1. Go to '...'
2. Click on '....'
3. See error

**Expected behavior**
Behavior yang diharapkan

**Screenshots**
Screenshot jika ada

**Device info:**
 - Device: [e.g. Samsung Galaxy S21]
 - OS: [e.g. Android 11]
 - App Version: [e.g. 1.0.0]

πŸ“„ License

Distributed under the MIT License. See LICENSE file for more information.

πŸ“ž Contact

Developer: [Your Name]

Project Link: https://github.com/orangdeso/e_porter

πŸ™ Acknowledgments

  • Flutter - Amazing cross-platform framework
  • GetX - Powerful state management
  • Firebase - Reliable backend services
  • Bandara Dhoho Kediri - Research collaboration

⭐ Jangan lupa untuk memberikan star jika project ini membantu!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages