Coding
PromptBeginner5 minmarkdown
Nano Banana Pro
Agent skill for nano-banana-pro
6
- Do not comment on your own actions on every step, be concise
Sign in to like and favorite skills
Indiana is an Android app built with Kotlin and Jetpack Compose integrating the public API of Bitrise.io It shows an overview of the users projects, builds, and build artifacts with an option to download and install them.
AppBackStack for navigation managementThe app uses a custom navigation system built on Navigation3:
AppBackStack (app/src/main/java/com/davidmedenjak/indiana/AppBackStack.kt): Central navigation controllerSessionManager (app/src/main/java/com/davidmedenjak/indiana/session/SessionManager.kt): Handles authentication stateNavKey objects with corresponding routesAppDatabase with ProjectDao for local data storageapi/bitrise.json)# Build the project ./gradlew build # Build debug APK ./gradlew assembleDebug # Build release APK ./gradlew assembleRelease # Clean build artifacts ./gradlew clean
# Run unit tests ./gradlew test # Run instrumentation tests ./gradlew connectedAndroidTest # Run specific test ./gradlew test --tests "com.davidmedenjak.indiana.SpecificTest"
# Install debug build ./gradlew installDebug # Uninstall debug build ./gradlew uninstallDebug
The API module auto-generates Kotlin client code from the OpenAPI specification:
# Regenerate API client (happens automatically during build) ./gradlew :api:openApiGenerate
All major components use Hilt for DI:
@HiltAndroidApp on the Application class@AndroidEntryPoint on Activities and Fragments@Module and @InstallIn for providing dependenciesEach screen follows a consistent pattern:
NavKey for navigation@HiltViewModel)StateFlow and MutableStateFlow for reactive statecollectAsStateWithLifecycle()SessionManagerThe app includes Firebase services that are configurable through
UserSettings:
The theme module provides:
theme/src/main/java/com/davidmedenjak/indiana/theme/ui/AuthRouteSessionManager.authenticate() validates the tokenProjectsGraphUserSettings for persistenceProjectEntity: Stores project informationProjectLastViewed: Tracks recently viewed projectsgradle/libs.versions.toml)