MIF_E31232435/DEPLOYMENT_GUIDE.md

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 ✅