feat: add documentation

This commit is contained in:
orangdeso 2025-07-06 13:57:33 +07:00
parent b9fdbfeae8
commit 5fec0b84e3
1 changed files with 337 additions and 2 deletions

339
README.md
View File

@ -1,3 +1,338 @@
# E-Porter
# E-Porter 🛫
Halo Semuanya
> **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**
```bash
git clone https://github.com/orangdeso/e_porter.git
cd e_porter
```
2. **Install dependencies**
```bash
flutter pub get
```
3. **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
4. **Konfigurasi Firebase**
```bash
# Install Firebase CLI
npm install -g firebase-tools
# Login ke Firebase
firebase login
# Inisialisasi Firebase di project
firebase init
```
5. **Setup Firestore Rules**
```javascript
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;
}
}
}
```
6. **Setup Realtime Database Rules**
```json
{
"rules": {
"transactions": {
"$userId": {
".read": "$userId === auth.uid",
".write": "$userId === auth.uid"
}
}
}
}
```
7. **Run aplikasi**
```bash
flutter run
```
## 📱 Platform Support
| Platform | Status |
|----------|--------|
| Android | ✅ Supported |
| iOS | ✅ Supported |
| Web | 🚧 In Development |
## 🗄️ Struktur Database
### Firestore Collections
#### `tickets/{ticketId}`
```javascript
{
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}`
```javascript
{
id: "document_id",
city: "Jakarta",
code: "CGK",
name: "Soekarno-Hatta International Airport"
}
```
### Realtime Database Structure
```javascript
{
"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%**.
```bash
# Run unit tests
flutter test
# Run integration tests
flutter drive --target=test_driver/app.dart
```
## 🎯 Roadmap
### Phase 1 (Current) ✅
- [x] Basic booking system
- [x] Payment integration
- [x] Seat management
- [x] 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](https://dart.dev/guides/language/effective-dart) guidelines
- Tambahkan documentation untuk public APIs
## 🐛 Bug Reports
Jika menemukan bug, silakan buat issue dengan template:
```markdown
**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](https://github.com/orangdeso)
- LinkedIn: [Your LinkedIn Profile]
**Project Link**: [https://github.com/orangdeso/e_porter](https://github.com/orangdeso/e_porter)
## 🙏 Acknowledgments
- [Flutter](https://flutter.dev/) - Amazing cross-platform framework
- [GetX](https://pub.dev/packages/get) - Powerful state management
- [Firebase](https://firebase.google.com/) - Reliable backend services
- Bandara Dhoho Kediri - Research collaboration
---
⭐ Jangan lupa untuk memberikan star jika project ini membantu!