Tugas Akademik: Research Methodology & Mobile Programming
"PENGEMBANGAN ASISTEN BELANJA PINTAR BERBASIS INTERAKSI SUARA UNTUK PENGENDALIAN PENGELUARAN KONSUMEN RITEL FISIK"
| Atribut | Detail |
|---|---|
| Nama | M. Sechan Alfarisi |
| NIM | 20230040094 |
| Kelas | TI23F |
| Program Studi | Teknik Informatika |
Cartify adalah solusi mobile inovatif yang dirancang untuk memitigasi fenomena Checkout Shock—kondisi kecemasan akibat ketidakpastian total belanja saat konsumen berada di antrian kasir. Aplikasi ini menggabungkan kecepatan pemrosesan lokal dengan kecerdasan buatan berbasis cloud dalam Hybrid AI Architecture:
- On-Device ASR (Automatic Speech Recognition): Menggunakan modul native (
expo-speech-recognition) untuk menangkap input suara pengguna secara instan tanpa latensi jaringan yang signifikan pada tahap transkripsi. - Cloud Gen-AI (Groq - Llama 3.1): Bertindak sebagai "otak" semantik yang menganalisis teks transkripsi. Modul ini dilatih (via system checking) untuk memahami:
- Slang Ritel Indonesia: "Goceng" (5.000), "Ceban" (10.000), "Setengah kilo".
- Konteks Unit Price: Membedakan antara harga total ("harganya 20 ribu") dengan harga satuan ("masing-masing 20 ribu").
- Koreksi Merek: Memperbaiki penyebutan fonetik (e.g., "Grin Tih" -> "Green Tea").
Tidak ada perintah kaku seperti "Tambah item susu". Pengguna berbicara secara natural:
"Tolong masukin dua kotak susu kental manis yang harganya dua belas ribu per kaleng." AI akan mengekstrak:
{ item: "Susu Kental Manis", qty: 2, price: 24000, context: "unit_price" }
- Dynamic Calculation: Total belanja dihitung ulang setiap kali item ditambahkan.
- Visual Alert System: Indikator visual berubah warna saat total belanja mendekati batas anggaran yang ditetapkan pengguna.
Menggunakan SQLite untuk persistensi data yang kuat. Data riwayat belanja, preferensi, dan log transaksi disimpan sepenuhnya di perangkat pengguna. Koneksi internet hanya dibutuhkan sepersekian detik saat pemrosesan suara via Groq API.
- Haptic Feedback: Memberikan respon getaran halus saat interaksi sukses, meniru sensasi fisik menekan tombol.
- Adaptive Theme: Mendukung Mode Gelap (Dark Mode) dan Terang secara otomatis mengikuti pengaturan sistem.
Aplikasi ini dibangun di atas fondasi teknologi modern yang memprioritaskan performa, skalabilitas, dan pengalaman pengembang (DX).
| Teknologi | Kegunaan |
|---|---|
| React Native | Framework UI cross-platform (Android/iOS). |
| Expo SDK 54 | Ekosistem pengembangan modern untuk integrasi hardware dan native modules. |
| TypeScript | Menjamin keamanan tipe data dan mengurangi bug runtime. |
| Teknologi | Kegunaan |
|---|---|
| React Context + Hooks | Manajemen state untuk auth dan settings (ringan, sesuai kebutuhan saat ini). |
| AsyncStorage | Penyimpanan preferensi user (contoh: bahasa & posisi tombol voice). |
| Expo SQLite | Database SQL relasional embedded untuk penyimpanan data offline (riwayat transaksi). |
| Layanan | Peran |
|---|---|
| Groq Cloud | Penyedia inferensi LPU (Language Processing Unit) untuk latensi ultra-rendah. |
| Llama 3.1 8B | Model bahasa besar (LLM) yang dioptimalkan untuk instruksi kompleks. |
- Node.js v18.x atau lebih baru.
- Git version control.
- Expo Go pada perangkat fisik (Android/iOS) atau Emulator.
- API Key Groq (Wajib untuk fitur AI).
-
Clone Repository
git clone https://github.com/username/Cartify.git cd Cartify -
Instalasi Dependensi
npm install # Disarankan menggunakan npm untuk kompatibilitas lockfile -
Konfigurasi Environment Variable (.env)
Duplikasi file
.env.exampleatau buat file.envbaru di root:EXPO_PUBLIC_GROQ_API_KEY=gsk_your_primary_key_here EXPO_PUBLIC_GROQ_API_KEY_2=gsk_backup_key_1 # Opsional: Untuk failover EXPO_PUBLIC_GROQ_API_KEY_3=gsk_backup_key_2 # Opsional: Untuk stabilitas
-
Menjalankan Development Server
npx expo start
- Tekan
adi terminal untuk membuka Android Emulator. - Tekan
idi terminal untuk membuka iOS Simulator. - Scan QR Code menggunakan aplikasi Expo Go di HP fisik.
- Tekan
Untuk hasil pengenalan suara terbaik, ikuti panduan berikut:
| Skenario | Contoh Perintah | Output AI yang Diharapkan |
|---|---|---|
| Belanja Standar | "Beli satu Roti Tawar harga lima belas ribu" | Item: Roti Tawar, Price: 15.000 |
| Harga Satuan | "Dua Yakult masing-masing dua ribu lima ratus" | Item: Yakult (x2), Price: 5.000 |
| Slang Mata Uang | "Ambil Indomie goreng lima bungkus harganya Ceban" | Item: Indomie Goreng (x5), Price: 10.000 |
| Koreksi Implisit | "Tisu Paseo harganya 10" (Context: Ribu) | Item: Tisu Paseo, Price: 10.000 |
- Suara tidak terdeteksi: Pastikan izin mikrofon telah diberikan ke aplikasi Expo Go/Cartify.
- Respon AI Lambat: Cek koneksi internet Anda. AI membutuhkan koneksi stabil ke server Groq.
- Error Rate Limit: Jika banyak request dalam waktu singkat, sistem akan otomatis beralih ke API Key cadangan (jika dikonfigurasi).
Struktur folder disusun untuk memisahkan UI Presentation, Business Logic, dan Data Access.
Cartify/
├── app/ # [PRESENTATION LAYER] Expo Router
│ ├── (tabs)/ # Main Screens (Home, History, Settings)
│ ├── transaction/ # Detail Transaction Views
│ └── _layout.tsx # Root Layout & Providers
│
├── src/ # [CORE APPLICATION LOGIC]
│ ├── components/ # Atomic UI Components
│ │ ├── ui/ # Primitives (Button, Text, Card)
│ │ └── ...
│ ├── hooks/ # Custom Hooks (Logic Encapsulation)
│ │ ├── useVoiceInput.ts # ASR logic (speech recognition)
│ │ └── useSettings.ts # Settings persisted in AsyncStorage
│ ├── services/ # External Services
│ │ ├── groqService.ts # AI Integration Layer
│ │ └── db.ts # SQLite Database Layer
│ └── context/ # Providers (contoh: AuthContext)
│
├── assets/ # Static Assets (Fonts, Images)
└── .env # Environment Secrets
Proyek ini merupakan bagian dari tugas mata kuliah dan bersifat Open Source untuk tujuan edukasi. License: MIT License.
Dikembangkan oleh M. Sechan Alfarisi (20230040094) - Teknik Informatika, Universitas Nusa Putra.