Kotlin · Jetpack Compose · Material 3

Small apps.
Real Android skills.

Choose from 20 guided apps, including 10 new Phase 1 projects using basic layouts, buttons and state. Understand each topic, build one step at a time, and compare your work with complete source code.

Complete Android Studio projects · No account or API key · Apps work offline after the first Gradle sync

A simple score counter
var score by rememberSaveable { mutableStateOf(0) }

Text("Score: $score")
Button(
    onClick = { score += 1 },
    enabled = score < 99
) {
    Text("Add one point")
}
Phase 1: a button changes one saved value, and Text displays the updated score. Full files and imports are included in each guide.
20Complete apps
137Guided steps
100%Source included

An exercise and a reference solution, together

Start with the Phase 1 collection after learning composables, layouts and state. Its ten apps use one screen and basic buttons, with no animation APIs or advanced libraries. The original collection below progresses from inputs and games to navigation and storage; choose it when you reach those lessons.

  1. 01

    Predict the result

    Read the brief and the concepts. Sketch the screen and identify the inputs, outputs, and state owner.

  2. 02

    Build in small steps

    Open the supplied scaffold in Android Studio. Try each instruction before inspecting its code excerpt and complete reference file.

  3. 03

    Verify and explain

    Run the acceptance scenarios, check off working features, and explain one event from button tap to screen update.

Phase 1 · Getting Started with Compose

10 simple apps to build next

Open the Phase 1 lesson: Prcatice more →

Practice Text, Column, Row, modifiers, reusable composables and small saved state values. Each guide includes a preview, a complete working app and concrete checks. Content changes immediately when you press a button; no animation code is needed.

Download all 10 Phase 1 projects
01Phase 1 · Beginner

Greeting Card

Arrange a greeting card, choose a preset recipient with ordinary buttons, and reset the greeting. Practice text, spacing, simple callbacks, and one saved string on a single screen.

Text and layoutOne saved stringAn event changes state
0.5–1h build·6 stepsBuild app
02Phase 1 · Beginner

Business Card

Build a simple contact card with initials, a name, a role, and reusable contact sections. Focus entirely on composable functions, parameters, typography, and a readable layout.

Static data needs no stateReusable functionsReadable structure
0.5–1h build·6 stepsBuild app
03Phase 1 · Beginner

Cafe Menu Board

Display three sample cafe items using one reusable card function. Add a basic Show/Hide button to reveal ingredient allergen notes with a single saved Boolean.

Reusable menu cardsConditional contentA descriptive button label
0.5–1h build·6 stepsBuild app
04Phase 1 · Beginner

Quote Switcher

Show one of four short learning reminders and switch between them with Previous, Next, and Reset buttons. Practice a Kotlin list, an index, and saved screen state.

Data and positionZero-based indexesWrapping safely
0.5–1h build·6 stepsBuild app
05Phase 1 · Beginner

Color Palette

Choose Indigo, Teal, or Amber with ordinary buttons and display the matching color sample. Practice a when expression, modifiers, and text that identifies the current choice.

One choice, one stringDerived colorSelection in words
0.5–1h build·6 stepsBuild app
06Phase 1 · Beginner

Two-Team Scoreboard

Build a two-team score display with Add, Remove, and Reset buttons. Practice reusable composables, bounded numbers, conditional text, and small saved screen state.

One state ownerDerived feedbackBoundaries at the action
1–2h build·6 stepsBuild app
07Phase 1 · Beginner

Phrase Builder

Create a sentence by choosing a subject, action, and place from ordinary buttons. Practice String state, reusable button groups, string templates, and a calculated word count.

String state and templatesSmall fixed choicesA calculated word count
1–2h build·6 stepsBuild app
08Phase 1 · Beginner

Discount Calculator

Choose a sample price and discount with buttons, then show the saving and final amount. Practice simple arithmetic, integer cents, saved selections, and readable result cards.

Integer money valuesCalculate in the right orderFormat without extra state
1–2h build·6 stepsBuild app
09Phase 1 · Beginner

Study Session Planner

Plan a study session with a block counter and a button that includes breaks. Practice Int and Boolean state, bounded callbacks, conditional arithmetic, and a clear total.

Two different saved valuesBreaks exist between blocksA button describes its next action
1–2h build·6 stepsBuild app
10Phase 1 · Beginner

Snack Order

Build a practice snack order with two quantity controls and an automatic total. Practice reusable composables, bounded counters, conditional empty-state text, and simple price arithmetic.

Reusable presentation with callbacksTotals come from quantitiesEmpty is an ordinary state
1–2h build·6 stepsBuild app
The original collection · Beginner to advanced

Explore 10 more mini projects

Review the Android lessons →
01Beginner

Student Profile Card

Build an editable student introduction card with a local avatar, reusable information rows, and an about-me toggle. Learn how a Compose screen changes when its state changes.

A screen is a tree of composablesState drives what the user seesSaved screen state has a specific purpose
1–2h build·7 stepsBuild app
02Beginner

Tip and Bill Splitter

Help a group split a restaurant bill. Accept a bill and people count, choose a tip percentage, and calculate a clear total and share with safe input handling.

Numeric fields still contain textValidation protects the calculationDerived results follow one source of truth
2–3h build·7 stepsBuild app
03Beginner

Temperature Unit Converter

Convert between Celsius and Fahrenheit with one input, a clear direction selector, Convert and Clear actions, and support for negative and decimal temperatures.

One selection, one source of truthThe inverse formula has a different orderEditor state is broader than valid numbers
2–3h build·6 stepsBuild app
04Beginner

Quadratic Equation Solver

Build a real-root solver for ax² + bx + c = 0. Learn how input validation, explicit result types, reusable fields, and mathematical branching turn a formula into a reliable small Android app.

A formula needs a decision treeThe discriminant controls the real-root casesResult types keep mathematical meaning explicit
3–4h build·8 stepsBuild app
05Beginner

Guess the Number

Build a playable guessing game, then use it to understand event handling, validation, recomposition, and saving a small screen state across rotation.

State and recompositionSmall saved valuesValidation before a state change
2–3h build·7 stepsBuild app
06Beginner

Android Basics Quiz

Create a five-question learning app with accessible answer selection, immediate explanations, a progress indicator, guarded scoring, and a restartable result screen.

Data-driven screensA small state machineIndex validation and scoring guards
3–4h build·8 stepsBuild app
07Intermediate

Shopping Checklist

Build an editable shopping list with stable row identities, validation, purchase tracking, and lifecycle-aware state from a ViewModel. Learn why rotation retention and permanent storage are different requirements.

Identity versus positionObservable state and immutable updatesViewModel and lifecycle-aware collection
3–4h build·8 stepsBuild app
08Intermediate

Mini Recipe Book

Build a searchable six-recipe catalog, navigate to a details screen using an item ID, and share the selected recipe with another Android app.

Resource-backed data classesNavigation and stable identityLazy layout constraints
3–4h build·8 stepsBuild app
09Intermediate

Focus Countdown Timer

Build a study timer with duration choices, Start/Pause/Resume/Reset controls, lifecycle-aware pausing, and a countdown based on elapsed time.

A small state machineViewModel and saved stateMonotonic time and coroutine scheduling
3–4h build·8 stepsBuild app
10Intermediate

Pocket Notes with Room

Build a persistent notebook with a searchable list, add/edit navigation, title validation, confirmation before deletion, and recoverable database error states.

Entities, primary keys, and SQL rowsDAO boundaries and generated codeDatabase lifetime and persistence
5–6h build·10 stepsBuild app

Bring the projects to your classroom

Each download includes a student README with the instructions, troubleshooting, checks, and rubric. Assign the core requirements first, then let students choose an extension.

Get the source bundle