A read-only GitHub issue viewer across multiple repositories.
Authentication — GitHub App device flow with no client secret required. Tokens auto-refresh every 8 hours.
Multi-repo tracking — Add and remove public or private repositories by search or manual owner/repo entry.
Issue browsing — Filter by state, label, milestone, and assignee. Infinite scroll pagination. Label chips rendered with actual GitHub hex colors.
Issue detail — Markdown-rendered body and comments with author avatars, metadata, view on GitHub, and share.
Offline support — Per-repo local caching with stale-while-revalidate. Offline banner with graceful degradation to cached data.
Theming — Material 3 with system, light, and dark mode. Preference persisted across sessions.
| Component | Choice |
|---|---|
| Framework | Flutter |
| State management | Riverpod |
| API | GitHub GraphQL |
| Auth | GitHub App + Device Flow |
| Local cache | Isar Community |
| Routing | GoRouter |
| Token storage | Flutter Secure Storage |
| Connectivity | Connectivity Plus |
| Design system | Material 3 |
Iris uses a pre-configured GitHub App, just sign in during first launch.
git clone https://github.com/TheJeffreyKuo/Iris.git
cd Iris
flutter pub get
dart run build_runner build
flutter run