Android MAD
Eighteen independent Kotlin and Jetpack Compose apps trace a learning journey from reactive interfaces and navigation to remote services, cloud documents, and local relational persistence.
Overview
Each level contains an explicitly labelled example, Task 1, and Task 2. These are eighteen separate Gradle projects with a single :app module each, rather than one application with eighteen features. Together they show how the responsibility for state moves from composables into ViewModels, repositories, remote services, and a local database.
Capture provenance & limitations
Screens were captured with ADB from live Android applications. Seventeen apps were rebuilt in disposable copies with separate demo package IDs; Dice & Average uses an existing APK because its current source contains an invalid drawable filename. Fictional data makes the local lists, rating flow, and draft forms concrete. The import manifest records the source fingerprints, build results, exact capture steps, and limitations.
Local database captures include relaunch checks for persisted shopping items and game records. Remote service outcomes are reported as observed: the dog image loads, the cat image does not render, and Number Facts returns an error. Movie search credentials and Firestore configuration were replaced with demonstration placeholders in the build copies. Cloud forms are captured as unsubmitted drafts because a test backend has not been verified.
Six levels of mobile engineering
Select a level, then an app to inspect its implementation and captured behavior.
Compose foundations
Build declarative screens, bind input, and render observable lists.
UI & State Hoisting · Jetpack Compose · Material 3 · remember · mutableStateListOf · LazyColumn
Guess the Animal
Identify the pictured animal and submit a text answer.
Implementation highlight. A remembered text field feeds a case-insensitive comparison against a string resource, with Toast feedback.
Engineering details & verification
Architecture & evidence
This independent Kotlin application uses Jetpack Compose and Material 3. Its Gradle settings include a single :app module. Relevant implementation files: MainActivity.kt.
Runtime verification
Entered giraffe, submitted the answer, and captured the Toast stating that the answer is correct. The captured app was rebuilt from a source-fingerprint-checked disposable copy using a separate .portfolio package ID. The existing template JUnit test passed. Android instrumentation tests were not run. Build and capture provenance are recorded in the import manifest.
Constraints & follow-up
Answer matching normalizes case but does not trim surrounding whitespace. State is local to composition.
Compose foundations: Example · Guess the Animal. 1 of 18.
- Kotlin
- Jetpack Compose
- Material 3
- Navigation Compose
- ViewModel
- LiveData
- Retrofit
- Coroutines
- Firebase Firestore
- Room
- Gradle