4da36aa31d
Flutter Android client for FabledAssistant with: - Session-cookie auth via persistent cookie jar (Dio + cookie_jar) - OAuth/SSO login via in-app WebView (flutter_inappwebview) - Notes: list, detail (markdown render), create/edit - Tasks: list with status tabs, create/edit with priority - Chat: SSE streaming bubbles, conversation management - Quick Capture FAB for rapid note/task creation - Settings screen (change server URL, logout) - Android home screen widget → opens chat - Riverpod state management, go_router navigation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Fabled — Android App
Native Android client for 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 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
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
flutter build apk --release
The signed APK will be at build/app/outputs/flutter-apk/app-release.apk.