explaingit

google/iosched

21,688KotlinAudience · developerComplexity · 4/5DormantLicenseSetup · moderate

TLDR

Reference Android app from Google I/O conference showing how to build a well-structured production app with modern architecture patterns, data layers, and real-time updates.

Mindmap

mindmap
  root((repo))
    What it does
      Conference event browser
      Session filtering and starring
      Venue maps
      Real-time updates
    Architecture
      Data layer with cloud sync
      Business logic layer
      Presentation with ViewModels
      Dependency injection
    Tech stack
      Kotlin language
      Firebase backend
      Gradle build system
      Coroutines async
    Learning value
      Separation of concerns
      Data flow patterns
      Testing practices
      Production code example
    Use cases
      Build conference apps
      Learn Android patterns
      Reference architecture
      Study Kotlin flows

Things people build with this

USE CASE 1

Study how to structure a large Android app with separate data, business logic, and presentation layers.

USE CASE 2

Learn how to use Kotlin Flows to handle real-time data updates across your app.

USE CASE 3

Build a conference or event management app with session browsing, filtering, and reservation features.

USE CASE 4

Understand dependency injection with Hilt and how to write testable Android code with Espresso.

Tech stack

KotlinAndroidFirebaseGradleHiltCoroutinesEspressoJUnit

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Android Studio, Firebase project setup, and Google services configuration.

Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

In plain English

This repository holds the official Google I/O conference app for Android, written in Kotlin. Google I/O is Google's annual developer conference featuring technical sessions and demos, and for ten years a companion mobile app helped attendees and online viewers browse the schedule and plan their day. The repository has now been archived; Google now points to a different sample, Now in Android, as its showcase project, but iosched remains useful as a reference codebase. In practical terms the app shows a list of conference events, sessions, office hours, app reviews, codelabs, which the user can filter by event type and topic, see details for, star to bookmark, and reserve a seat for. It also has a map of the venue and a Home screen that surfaces time-relevant information during the conference. The codebase is interesting because Google maintained it as a real-world example of Modern Android Development: it follows the official Guide to App Architecture, separating UI from logic via ViewModels, a repository data layer, a small domain layer of use cases, and observable data streams using Kotlin Flows. Conference data and user state live in Cloud Firestore with offline caching, user preferences live in DataStore, and there is an experimental migration to Jetpack Compose on a separate branch. You would clone this repo to study how a real Android app combines these pieces, Hilt for dependency injection, the Navigation component, Room with full-text search, Espresso and JUnit for testing, the Jetpack Benchmark library for startup measurement, and several Firebase services. It is built with Gradle using Kotlin build scripts. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Show me how the iosched app separates data fetching from the UI layer using ViewModels and Flows.
Prompt 2
How does the iosched codebase use Hilt for dependency injection? Give me a concrete example.
Prompt 3
Walk me through the architecture of the iosched app, what goes in the data layer vs the presentation layer?
Prompt 4
How does iosched handle real-time conference updates and user preferences with Firebase?
Prompt 5
Show me an example of how iosched uses Kotlin coroutines to manage background tasks without blocking the UI.
Open on GitHub → Explain another repo

Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.