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 aplikasi akan ditambahkan di sini
- Pencarian dan pemilihan penerbangan
- Pemilihan kursi (seat) secara real-time
- Manajemen data penumpang
- Sistem pembayaran dengan QRIS
- 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
- Payment timer dengan countdown real-time
- Upload bukti pembayaran
- Tracking status transaksi
- Riwayat pembayaran lengkap
- Real-time status tracking
- Notifikasi transaksi kedaluwarsa
- Sistem pembatalan otomatis
- Boarding pass digital
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
- Flutter - Cross-platform mobile framework
- GetX - State management dan dependency injection
- Dart - Programming language
- Firebase Firestore - Primary database untuk data utama
- Firebase Realtime Database - Real-time synchronization
- Firebase Storage - File storage untuk bukti pembayaran
- Firebase Authentication - User authentication
- Clean Architecture - Separation of concerns
- Repository Pattern - Data access abstraction
- UseCase Pattern - Business logic encapsulation
- Flutter SDK >= 3.0.0
- Dart SDK >= 3.0.0
- Android Studio / VS Code
- Firebase account dan project setup
- Clone repository
git clone https://github.com/orangdeso/e_porter.git
cd e_porter- Install dependencies
flutter pub get-
Setup Firebase
- Buat project Firebase baru
- Download
google-services.jsonuntuk Android - Download
GoogleService-Info.plistuntuk iOS - Tempatkan file konfigurasi di direktori yang sesuai
-
Konfigurasi Firebase
# Install Firebase CLI
npm install -g firebase-tools
# Login ke Firebase
firebase login
# Inisialisasi Firebase di project
firebase init- 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;
}
}
}- Setup Realtime Database Rules
{
"rules": {
"transactions": {
"$userId": {
".read": "$userId === auth.uid",
".write": "$userId === auth.uid"
}
}
}
}- Run aplikasi
flutter run| Platform | Status |
|---|---|
| Android | β Supported |
| iOS | β Supported |
| Web | π§ In Development |
{
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
}
}{
id: "document_id",
city: "Jakarta",
code: "CGK",
name: "Soekarno-Hatta International Airport"
}{
"transactions": {
"{userId}": {
"{ticketId}": {
"{transactionId}": {
"payment": { /* payment data */ },
"flight": { /* flight data */ },
"bandara": { /* airport data */ },
"user": { /* user data */ },
"passenger": 1,
"passengerDetails": [],
"numberSeat": []
}
}
}
}
}User memilih tiket β Pilih layanan porter β Pilih penumpang β Review pesanan β Buat transaksi
Generate QRIS β Timer countdown β Upload bukti β Verifikasi admin β Tiket confirmed
Pilih kursi β Update status "taken" β Jika expired β Reset ke "available"
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- Basic booking system
- Payment integration
- Seat management
- Transaction expiry system
- Push notifications
- Payment gateway integration
- Real-time airport data integration
- Geofencing for porter location
- Admin dashboard
- Analytics & reporting
- Multi-language support
- Offline mode support
- Fork repository
- Buat feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - Buka Pull Request
- Gunakan
dart formatuntuk formatting - Ikuti Effective Dart guidelines
- Tambahkan documentation untuk public APIs
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]Distributed under the MIT License. See LICENSE file for more information.
Developer: [Your Name]
- Email: ahmadzaqi98mmm@gmail.com
- GitHub: @orangdeso
- LinkedIn: Ahmad Choirul Umam Ali R
Project Link: https://github.com/orangdeso/e_porter
- 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!