# ConfiVoice Struktur utama project: ```text confivoice3/ ├── cv_app/ # Aplikasi Flutter mobile ├── ml/ # Machine learning, model, dataset, dan API prediksi └── cv_web/ # Website admin untuk melihat data hasil prediksi siswa/i ``` ## 1. Jalankan API Prediksi API berada di folder `ml/`. ```bash cd ml ../cv_app/.venv/bin/python -m uvicorn api_app:app --host 0.0.0.0 --port 8000 ``` Endpoint penting: ```text POST http://localhost:8000/predict POST http://localhost:8000/predictions GET http://localhost:8000/predictions GET http://localhost:8000/model ``` `POST /predict` hanya menjalankan analisis dan menampilkan hasil di Flutter. Data baru masuk database setelah pengguna menekan tombol `Simpan Hasil`, yang mengirim data ke `POST /predictions`. ## 2. Jalankan Flutter Mobile Flutter berada di folder `cv_app/mobile_app/`. ```bash cd cv_app/mobile_app flutter pub get flutter run ``` Endpoint default emulator Android: ```text http://10.0.2.2:8000/predict ``` Jika memakai HP fisik, ganti endpoint di menu `Model` menjadi IP komputer, misalnya: ```text http://192.168.1.6:8000/predict ``` ## 3. Jalankan Website Admin Admin berada di folder `cv_web/`. ```bash cd cv_web ../cv_app/.venv/bin/python -m uvicorn app:app --host 0.0.0.0 --port 8001 ``` Buka: ```text http://localhost:8001/admin ``` ## Database phpMyAdmin / MySQL Struktur baru default memakai MySQL/MariaDB agar data bisa dicek lewat phpMyAdmin. 1. Nyalakan MySQL dari XAMPP/MAMP. 2. Buka phpMyAdmin. 3. Jalankan API. Database dan tabel akan dibuat otomatis jika user MySQL punya izin `CREATE DATABASE`. Konfigurasi default: ```text host: 127.0.0.1 port: 3306 user: root password: kosong database: confivoice table: prediction_results ``` Jika setting MySQL kamu berbeda, pakai environment: ```bash export CONFIVOICE_DB_DRIVER=mysql export CONFIVOICE_MYSQL_HOST=127.0.0.1 export CONFIVOICE_MYSQL_PORT=3306 export CONFIVOICE_MYSQL_USER=root export CONFIVOICE_MYSQL_PASSWORD= export CONFIVOICE_MYSQL_DATABASE=confivoice ``` Untuk MAMP, biasanya port `8889` dan password `root`. Schema SQL manual tersedia di: ```text cv_web/schema_mysql.sql ``` Jika ada data SQLite lama yang mau dipindah ke MySQL: ```bash cd ml ../cv_app/.venv/bin/python migrate_sqlite_to_mysql.py ``` SQLite lama, jika masih ada, berada di: ```text cv_web/data/confivoice.db ``` ## File Lama Beberapa file lama di `cv_app/` masih dipertahankan agar command lama tidak langsung rusak: ```text cv_app/api_app.py cv_app/app.py cv_app/predict_app.py cv_app/audio_utils_app.py cv_app/database.py ``` Untuk struktur baru, gunakan: ```text ml/api_app.py cv_web/app.py cv_app/mobile_app/ ```