Native Android IIIF viewer for browsing, searching, and viewing digital collection content from IIIF-compatible endpoints.
- Viewer: Opens a IIIF manifest and presents page-by-page content with zoom/pan image viewing, thumbnails, metadata info, and media playback.
- Explore: Navigates hierarchical IIIF collections and opens manifests directly into the viewer flow.
- Search: Runs keyword search against the configured works API, with facet filtering and paginated result loading.
- Favorites: Saves manifests for quick return and supports removing entries from a dedicated favorites tab.
- Settings: Configures appearance mode, viewer/debug options, and loading a custom manifest URL.
- App shell: Single-activity app with a bottom-tab navigation model (
Viewer,Explore,Search,Favorites,Settings). - State management: A central Android
ViewModelholds shared app state (active manifest, settings, favorites) and coordinates screen actions. - Data layer: A repository handles IIIF manifest/collection/search requests and maps JSON responses into app-level models.
- Local persistence: Settings and favorites are stored on-device and restored at app startup.
- Language: Kotlin
- UI: Jetpack Compose with Material 3
- Architecture/runtime: Android SDK + AndroidX lifecycle/navigation/activity APIs
- Concurrency: Kotlin coroutines
- Networking/parsing: Platform HTTP + JSON handling
- Media playback: Android media playback components for audiovisual IIIF content
- Uses IIIF Presentation-style manifests/canvases for page content.
- Supports image-first viewing with tile-aware rendering behavior for high-resolution sources.
- Supports media canvases when streams are present.
- Exposes manifest metadata and visibility/restriction cues in the UI.
- Open app directory in Android Studio.
- Let Gradle sync the project.
- Run the
appmodule on an emulator or physical Android device.
Notes:
- The app requires network access (
INTERNET) to load remote IIIF resources. - A default manifest is configured so the viewer has immediate startup content.
