|
||
---|---|---|
.dart_tool | ||
.idea | ||
.vscode | ||
android | ||
assets | ||
fonts | ||
ios | ||
lib | ||
linux | ||
macos | ||
test | ||
web | ||
windows | ||
.gitattributes | ||
.gitignore | ||
.metadata | ||
README.md | ||
analysis_options.yaml | ||
devtools_options.yaml | ||
e_porter.iml | ||
pubspec.lock | ||
pubspec.yaml |
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
- 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.json
untuk Android - Download
GoogleService-Info.plist
untuk 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 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
- 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
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]
- Email: your.email@example.com
- GitHub: @orangdeso
- LinkedIn: [Your LinkedIn Profile]
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!