Skip to main content

Frequently Asked Questions (FAQ)

Jawaban untuk pertanyaan yang sering diajukan tentang MStore Mobile.

πŸ“± General

Apa itu MStore Mobile?

MStore Mobile adalah aplikasi Point of Sale (POS) modern berbasis Flutter yang dirancang untuk membantu pengelolaan toko retail, khususnya toko mushola. Aplikasi ini menyediakan fitur lengkap mulai dari kasir, manajemen inventori, laporan, hingga integrasi dengan berbagai sistem pembayaran.

Platform apa saja yang didukung?

MStore Mobile mendukung:
  • iOS 12.0 ke atas
  • Android 5.0 (API 21) ke atas
  • Web (Chrome, Safari, Firefox)
  • Windows 10 ke atas
  • macOS 10.14 ke atas

Apakah MStore bisa digunakan offline?

Ya! MStore menggunakan arsitektur offline-first. Anda bisa tetap melakukan transaksi dan mengelola inventori tanpa koneksi internet. Data akan otomatis tersinkronisasi saat koneksi tersedia.

Berapa biaya MStore Mobile?

Silakan hubungi tim sales untuk informasi harga dan paket berlangganan.

πŸš€ Installation & Setup

Bagaimana cara install MStore Mobile?

Lihat panduan lengkap di Installation Guide. Ringkasan:
# Clone repository
git clone <repository-url>

# Install dependencies
flutter pub get

# Generate code
flutter pub run build_runner build --delete-conflicting-outputs

# Run app
flutter run --flavor development -t lib/main_development.dart

Apa saja requirement untuk development?

  • Flutter SDK 3.8+
  • Dart SDK 3.8+
  • Xcode 14+ (untuk iOS)
  • Android Studio (untuk Android)
  • CocoaPods (untuk iOS)

Bagaimana cara setup Firebase?

  1. Buat project di Firebase Console
  2. Download konfigurasi:
    • iOS: GoogleService-Info.plist
    • Android: google-services.json
  3. Letakkan di folder yang sesuai
  4. Enable Firebase services (Auth, Firestore, FCM, Crashlytics)
Lihat detail di Configuration Guide.

πŸ’» Development

Bagaimana cara menambahkan fitur baru?

  1. Buat branch baru: git checkout -b feature/nama-fitur
  2. Ikuti struktur folder yang ada
  3. Implement dengan BLoC pattern
  4. Tambahkan unit tests
  5. Update dokumentasi
  6. Create pull request
Lihat Development Guidelines.

Bagaimana cara menjalankan tests?

# Run all tests
flutter test

# Run specific test
flutter test test/features/product/bloc/product_bloc_test.dart

# Run with coverage
flutter test --coverage

# View coverage
genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html

Bagaimana cara generate code?

# One-time generation
flutter pub run build_runner build --delete-conflicting-outputs

# Watch mode (auto-generate on file changes)
flutter pub run build_runner watch --delete-conflicting-outputs

Kenapa build_runner error β€œConflicting outputs”?

Gunakan flag --delete-conflicting-outputs:
flutter pub run build_runner build --delete-conflicting-outputs

πŸ—οΈ Architecture

Apa arsitektur yang digunakan?

MStore menggunakan Clean Architecture dengan BLoC Pattern:
  • Presentation Layer: UI, Widgets, BLoC
  • Domain Layer: Business Logic, Use Cases, Entities
  • Data Layer: Repository, API, Database
Lihat Architecture Overview.

Mengapa menggunakan BLoC?

BLoC (Business Logic Component) memberikan:
  • βœ… Separation of concerns
  • βœ… Testability
  • βœ… Reusability
  • βœ… Predictable state management
  • βœ… Easy debugging
Lihat State Management Guide.

Bagaimana cara kerja offline-first?

  1. Data disimpan di local database (Isar)
  2. UI membaca dari local database
  3. Background sync dengan API
  4. Conflict resolution otomatis
  5. Real-time updates via MQTT

πŸ” Authentication

Bagaimana cara login?

MStore mendukung multiple authentication methods:
  • Email/Password
  • Google Sign-In
  • Apple Sign-In
// Email/Password
await authRepository.login(
  LoginRequest(email: email, password: password),
);

// Google Sign-In
await authRepository.signInWithGoogle();

// Apple Sign-In
await authRepository.signInWithApple();

Bagaimana token management?

  • Access Token: Short-lived (15 menit)
  • Refresh Token: Long-lived (30 hari)
  • Auto-refresh: Handled by RefreshTokenInterceptor
  • Storage: Encrypted di Isar database

Apa yang terjadi saat token expired?

RefreshTokenInterceptor otomatis:
  1. Detect HTTP 401 response
  2. Call refresh token endpoint
  3. Update tokens
  4. Retry original request
  5. Jika refresh gagal β†’ logout user

πŸ’³ Cashier & Transactions

Bagaimana cara melakukan transaksi?

  1. Buka halaman Cashier
  2. Cari dan tambahkan produk ke cart
  3. Atur quantity jika perlu
  4. Klik Checkout
  5. Pilih metode pembayaran
  6. Input jumlah bayar (untuk cash)
  7. Process payment
  8. Print receipt (opsional)

Apakah bisa scan barcode?

Ya! Gunakan tombol scanner di search bar atau tekan F3 (keyboard shortcut).

Metode pembayaran apa saja yang didukung?

  • Cash
  • Debit/Credit Card
  • E-Wallet (GoPay, OVO, Dana, dll)
  • Bank Transfer
  • QRIS

Bagaimana cara print receipt?

  1. Pair Bluetooth thermal printer
  2. Configure di Settings β†’ Printer
  3. Receipt akan auto-print setelah transaksi
  4. Atau manual print dari Transaction History

πŸ“¦ Inventory

Bagaimana cara menambah produk?

  1. Buka Inventory β†’ Products
  2. Klik tombol β€œAdd Product”
  3. Isi form (nama, SKU, harga, stok, dll)
  4. Upload foto (opsional)
  5. Save

Bagaimana cara stock opname?

  1. Buka Inventory β†’ Stock Opname
  2. Pilih produk
  3. Input actual stock
  4. System akan create adjustment otomatis
  5. Review dan approve

Bagaimana cara set low stock alert?

Saat create/edit product, set field minStock. System akan kirim notifikasi saat stock di bawah threshold.

πŸ“Š Reports & Analytics

Report apa saja yang tersedia?

  • Sales Report: Revenue, transactions, trends
  • Inventory Report: Stock levels, movements
  • Financial Report: Profit, expenses, cash flow
  • Product Report: Top sellers, slow movers
  • Employee Report: Performance, transactions

Bagaimana cara export report?

  1. Buka report yang diinginkan
  2. Set date range dan filters
  3. Klik tombol Export
  4. Pilih format (PDF/Excel)
  5. File akan di-download

Apakah ada dashboard real-time?

Ya! Dashboard menampilkan:
  • Today’s revenue
  • Transaction count
  • Top products
  • Low stock alerts
  • Recent transactions
Data update real-time via MQTT.

πŸ–¨οΈ Printer

Printer apa yang didukung?

MStore mendukung Bluetooth thermal printer dengan ESC/POS protocol. Tested printers:
  • Epson TM-T82
  • Star TSP143III
  • Zebra ZD410
  • Generic 58mm/80mm thermal printers

Bagaimana cara connect printer?

  1. Pair printer via Bluetooth settings
  2. Buka Settings β†’ Printer
  3. Scan for devices
  4. Select printer
  5. Test print
Troubleshooting:
  1. βœ… Printer paired dan connected
  2. βœ… Printer has paper
  3. βœ… Bluetooth permissions granted
  4. βœ… Printer turned on
  5. βœ… Try test print
Lihat Troubleshooting Guide.

🌐 Network & Sync

Bagaimana cara kerja sync?

  1. Write: Data ditulis ke local database
  2. Queue: Request di-queue untuk sync
  3. Sync: Background job sync ke API
  4. Retry: Auto-retry jika gagal
  5. Conflict: Last-write-wins strategy

Apa itu MQTT dan untuk apa?

MQTT adalah protocol untuk real-time messaging. Digunakan untuk:
  • Real-time inventory updates
  • Transaction notifications
  • System announcements
  • Multi-device sync

Bagaimana jika sync conflict?

Default strategy: Last-write-wins
  • Server timestamp digunakan sebagai reference
  • Local data di-override dengan server data
  • Conflict log disimpan untuk audit

πŸ”§ Troubleshooting

App crash saat startup

  1. Check logs: flutter logs
  2. Clear app data
  3. Reinstall app
  4. Check Firebase configuration
  5. Verify API endpoint

Data tidak sync

  1. Check internet connection
  2. Verify API credentials
  3. Check sync queue: Settings β†’ Sync Status
  4. Manual sync: Pull to refresh
  5. Clear cache dan re-sync

Build failed

# Clean and rebuild
flutter clean
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs
flutter run
Lihat Troubleshooting Guide untuk masalah lainnya.

πŸ”’ Security

Apakah data aman?

Ya! MStore menggunakan:
  • βœ… HTTPS untuk semua komunikasi
  • βœ… JWT token authentication
  • βœ… Encrypted local storage
  • βœ… Role-based access control
  • βœ… Audit logging

Bagaimana cara backup data?

Data otomatis backup ke cloud (Firestore). Untuk manual backup:
  1. Settings β†’ Backup & Restore
  2. Export data
  3. Save to secure location

Apa yang terjadi jika device hilang?

  1. Login dari device lain
  2. Revoke access dari device lama
  3. Data tetap aman di cloud
  4. Transaction history tetap tersimpan

πŸ“ž Support

Bagaimana cara mendapat bantuan?

Bagaimana cara request fitur baru?

  1. Check roadmap untuk planned features
  2. Create feature request di issue tracker
  3. Describe use case dan benefit
  4. Team akan review dan prioritize

Dimana saya bisa belajar lebih lanjut?


πŸ“š Additional Resources


Tidak menemukan jawaban?
Silakan hubungi tim support atau buat issue di repository.
Last Updated: October 14, 2024