# Fabled — Android App Native Android client for [FabledAssistant](https://github.com/yourusername/fabledassistant), a self-hosted AI productivity assistant. ## Features - **Notes** — create, edit, and browse markdown notes - **Tasks** — manage tasks with status (To Do / In Progress / Done) and priority - **Chat** — streaming AI conversations with real-time SSE response display - **Quick Capture** — FAB shortcut to create a note or task from anywhere - **OAuth / SSO** — authenticates via your server's configured OIDC provider; local username/password login also supported if enabled on the server - **Session persistence** — stays logged in across app restarts via a persistent cookie jar - **Home screen widget** — tap to open the chat screen directly from the Android launcher ## Requirements - A running [FabledAssistant](https://github.com/yourusername/fabledassistant) server (self-hosted) - Android 5.0+ (API 21) ## Getting Started ### Prerequisites - Flutter 3.x SDK - Android Studio (for Android SDK and emulator) - JDK 17 ### Setup ```bash flutter pub get flutter run ``` On first launch, enter your FabledAssistant server URL (e.g. `https://fabled.example.com`) and sign in. ## Architecture ``` lib/ ├── main.dart # Entry point; resolves async deps before runApp ├── app.dart # GoRouter + auth redirect guards + shell nav ├── core/ │ ├── constants.dart # Route name constants │ └── exceptions.dart # AppException hierarchy ├── data/ │ ├── api/ # Dio HTTP layer (one class per resource) │ ├── models/ # Plain Dart models with fromJson/toJson │ └── repositories/ # Thin wrappers over API classes └── providers/ # Riverpod providers (state + dependency wiring) screens/ # Flutter UI screens ``` **Key packages:** `flutter_riverpod`, `go_router`, `dio` + `cookie_jar`, `flutter_inappwebview`, `flutter_markdown` ## Building a Release APK ```bash flutter build apk --release ``` The signed APK will be at `build/app/outputs/flutter-apk/app-release.apk`.