# ForkFolio Mobile 📱🍳 Cross-platform mobile application for **ForkFolio** built with Flutter, featuring deep **Android Share Target** ingestion, multimodal **Gemini Vision Camera Scanning**, and distraction-free **Cook Mode**. --- ## ✨ Features * **Interactive Share Target (`ACTION_SEND`)**: * Tap "Share" from Chrome, Instagram, TikTok, Reddit, or YouTube directly to ForkFolio. * Pops an interactive bottom sheet that sanitizes URLs, extracts captions, scrapes details, and lets you preview & tag before saving. * **Camera Recipe Scanner**: * Point the camera at physical cookbooks, magazine pages, or handwritten recipe cards. * Direct ingestion into ForkFolio's `POST /api/recipes/scan-photo` powered by server-side Gemini 2.5 Flash Vision. * **Kitchen Cook Mode**: * Automatic `Wakelock` keeps the screen awake so you don't touch your phone with flour or messy hands. * Large, counter-readable typography with swipeable step cards. * Live serving size scaling (0.5x, 1x, 1.5x, 2x) recalculating ingredient amounts on the fly. * Integrated cooking timers with audible alerts. * **Hardware-Backed Persistent Authentication**: * Connects using `ff_m_...` device tokens stored in **Android Keystore** (`EncryptedSharedPreferences`) or **iOS Keychain**. * Sliding 90-day inactivity expiration. * One-click remote device revocation via ForkFolio web settings. --- ## 🚀 Getting Started ### 1. Prerequisites * [Flutter SDK](https://flutter.dev/docs/get-started/install) (version `>= 3.2.0`) * Android Studio with Android SDK (API 34+) or VS Code with Flutter extension * An active ForkFolio instance accessible over HTTPS ### 2. Install Dependencies ```bash cd forkfolio-mobile flutter pub get ``` ### 3. Run in Development Connect an Android device or launch an emulator, then run: ```bash flutter run ``` ### 4. Build Release APK ```bash flutter build apk --release ``` The resulting APK will be located at: `build/app/outputs/flutter-apk/app-release.apk` --- ## 🔒 Security & Networking * **Server Connection**: Enter your public HTTPS domain (e.g. `https://recipes.yourdomain.com`). * **Credentials**: Log in once with your standard username/password. The app automatically registers with your device model name (e.g. "Google Pixel 8 Pro") and receives an encrypted persistent token. * **Revocation**: At any time, you can visit the ForkFolio web app, open **Settings -> Linked Mobile Devices**, and tap **"Revoke"** to immediately cut off mobile access.