Go to file
orangdeso 5fec0b84e3 feat: add documentation 2025-07-06 13:57:33 +07:00
.dart_tool Feat: add package animation 2025-05-31 18:49:42 +07:00
.idea Feat: complete logic get data for features information users and slicing UI for change password screen 2025-05-12 17:47:54 +07:00
.vscode Feat: add slicing login_screen 2025-02-12 18:31:56 +07:00
android Feat: This feature is not used 2025-05-13 22:23:21 +07:00
assets Feat: add boarding screen 2025-05-28 23:59:45 +07:00
fonts Feat: add style and font 2025-02-11 20:42:03 +07:00
ios Initial commit 2025-02-03 14:53:29 +07:00
lib Feat: add shimmer widget for features home 2025-06-01 22:27:37 +07:00
linux Feat: add features print ticket boarding pass 2025-05-07 21:05:27 +07:00
macos Feat: add features print ticket boarding pass 2025-05-07 21:05:27 +07:00
test Initial commit 2025-02-03 14:53:29 +07:00
web Initial commit 2025-02-03 14:53:29 +07:00
windows Feat: add features print ticket boarding pass 2025-05-07 21:05:27 +07:00
.gitattributes Initial commit 2025-02-03 14:53:29 +07:00
.gitignore Update .gitignore 2025-02-03 14:56:42 +07:00
.metadata Initial commit 2025-02-03 14:53:29 +07:00
README.md feat: add documentation 2025-07-06 13:57:33 +07:00
analysis_options.yaml Initial commit 2025-02-03 14:53:29 +07:00
devtools_options.yaml Feat: add slicing design boarding pass page 2025-03-06 15:40:52 +07:00
e_porter.iml Initial commit 2025-02-03 14:53:29 +07:00
pubspec.lock Feat: add package animation 2025-05-31 18:49:42 +07:00
pubspec.yaml Feat: add package animation 2025-05-31 18:49:42 +07:00

README.md

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!