211 lines
3.8 KiB
Markdown
211 lines
3.8 KiB
Markdown
# DEPLOYMENT GUIDE - API & FLUTTER APP
|
|
|
|
## 📱 DEPLOYMENT FLUTTER APP
|
|
|
|
### Step 1: Build APK (Android)
|
|
|
|
```bash
|
|
cd c:\fluuter.u\permintaandanprediksi_stok_bahan_kue\finalproject
|
|
flutter clean
|
|
flutter pub get
|
|
flutter build apk --release
|
|
```
|
|
|
|
Output APK: `build\app\outputs\flutter-apk\app-release.apk`
|
|
|
|
### Step 2: Build AppBundle (Google Play)
|
|
|
|
```bash
|
|
flutter build appbundle --release
|
|
```
|
|
|
|
Output: `build\app\outputs\bundle\release\app-release.aab`
|
|
|
|
### Step 3: Install APK to Device
|
|
|
|
```bash
|
|
flutter install
|
|
# OR
|
|
adb install build\app\outputs\flutter-apk\app-release.apk
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 DEPLOYMENT PYTHON API
|
|
|
|
### Option A: Heroku (Cloud - Recommended)
|
|
|
|
#### 1. Install Heroku CLI
|
|
|
|
https://devcenter.heroku.com/articles/heroku-cli
|
|
|
|
#### 2. Create Procfile
|
|
|
|
File: `ml_model/Procfile`
|
|
|
|
```
|
|
web: gunicorn app:app
|
|
```
|
|
|
|
#### 3. Update requirements.txt
|
|
|
|
```bash
|
|
cd ml_model
|
|
pip freeze > requirements.txt
|
|
# Add gunicorn:
|
|
echo "gunicorn==20.1.0" >> requirements.txt
|
|
```
|
|
|
|
#### 4. Deploy to Heroku
|
|
|
|
```bash
|
|
heroku login
|
|
heroku create prediksi-stok-api
|
|
git push heroku main
|
|
```
|
|
|
|
#### 5. Access API
|
|
|
|
```
|
|
https://prediksi-stok-api.herokuapp.com/health
|
|
```
|
|
|
|
#### 6. Update Flutter API URL
|
|
|
|
`lib/services/ml_service.dart`:
|
|
|
|
```dart
|
|
static const String baseUrl = 'https://prediksi-stok-api.herokuapp.com';
|
|
```
|
|
|
|
---
|
|
|
|
### Option B: Local Server (Development)
|
|
|
|
#### 1. Keep API Running
|
|
|
|
```bash
|
|
cd ml_model
|
|
python app.py
|
|
```
|
|
|
|
#### 2. Access from Phone
|
|
|
|
Use IP address instead of localhost:
|
|
|
|
```
|
|
http://192.168.1.75:5000
|
|
```
|
|
|
|
Ganti `192.168.1.75` dengan IP lokal Anda.
|
|
|
|
#### 3. Update Flutter API URL
|
|
|
|
`lib/services/ml_service.dart`:
|
|
|
|
```dart
|
|
static const String baseUrl = 'http://192.168.1.75:5000';
|
|
```
|
|
|
|
---
|
|
|
|
### Option C: AWS EC2 (Advanced)
|
|
|
|
1. Launch EC2 instance (Ubuntu)
|
|
2. Install Python & dependencies
|
|
3. Deploy Flask with Gunicorn + Nginx
|
|
4. Get Elastic IP
|
|
5. Update Flutter API URL
|
|
|
|
---
|
|
|
|
## ✅ CHECKLIST SEBELUM DEPLOY
|
|
|
|
### Backend
|
|
|
|
- [ ] API running locally? (`python app.py`)
|
|
- [ ] All endpoints working? (Test 1-4)
|
|
- [ ] Models loaded correctly?
|
|
- [ ] CORS enabled?
|
|
- [ ] Requirements.txt updated?
|
|
|
|
### Frontend
|
|
|
|
- [ ] ML Service created? (`ml_service.dart`)
|
|
- [ ] Prediction Page created? (`prediction_page.dart`)
|
|
- [ ] main.dart updated? (imports PredictionPage)
|
|
- [ ] pubspec.yaml has `http` package?
|
|
- [ ] API URL configured?
|
|
- [ ] App builds without errors?
|
|
|
|
```bash
|
|
flutter clean
|
|
flutter pub get
|
|
flutter build apk --release
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 TESTING DEPLOYED APP
|
|
|
|
### 1. Test API Health
|
|
|
|
```bash
|
|
curl https://prediksi-stok-api.herokuapp.com/health
|
|
# Expected: status: "healthy"
|
|
```
|
|
|
|
### 2. Test App on Device
|
|
|
|
- Install APK
|
|
- Open app
|
|
- Fill form
|
|
- Click PREDIKSI
|
|
- Check result
|
|
|
|
---
|
|
|
|
## 🆘 COMMON DEPLOYMENT ISSUES
|
|
|
|
### Issue 1: "API tidak tersedia"
|
|
|
|
**Solution:**
|
|
|
|
- API not running? Start it: `python app.py`
|
|
- Wrong IP address? Check: `ipconfig`
|
|
- Firewall blocking port 5000?
|
|
|
|
### Issue 2: "Connection refused"
|
|
|
|
**Solution:**
|
|
|
|
- Use IP instead of localhost
|
|
- Both API & app on same WiFi?
|
|
- Firewall allows port 5000?
|
|
|
|
### Issue 3: "Endpoint tidak ditemukan"
|
|
|
|
**Solution:**
|
|
|
|
- API URL correct?
|
|
- Endpoint spelling correct? (`/prediksi` not `/prediksi/`)
|
|
- Headers correct? (`Content-Type: application/json`)
|
|
|
|
---
|
|
|
|
## 📊 DEPLOYMENT SUMMARY
|
|
|
|
| Step | Status | Notes |
|
|
| --------------- | ------ | ------------------------- |
|
|
| **API Running** | ✅ | `python app.py` |
|
|
| **Flutter UI** | ✅ | `PredictionPage` created |
|
|
| **ML Service** | ✅ | `ml_service.dart` created |
|
|
| **API URL** | ⚙️ | Configure for production |
|
|
| **Build APK** | ⚙️ | `flutter build apk` |
|
|
| **Deploy API** | ⚙️ | Choose Heroku/AWS/Local |
|
|
| **Publish App** | ⚙️ | Google Play Store |
|
|
|
|
---
|
|
|
|
**Status:** Ready for Production Deployment ✅
|