STAGE 1: Learn the language
Concept: Types, conditions and functions support predictable behavior.
Task: Implement small Kotlin exercises for validating a session duration and formatting totals.
Acceptance: Reject negative duration and explain the chosen upper bound.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 2: Model app state
Concept: UI state should have a clear source of truth.
Task: Sketch session data, loading, empty and error states before connecting screens.
Acceptance: Do not store important state only in a transient visual element.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 3: Build the core flow
Concept: A small usable flow is better than many incomplete screens.
Task: Create add-session, list-session and total-time behavior.
Acceptance: State explicitly whether data persist after app restart.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 4: Test lifecycle and access
Concept: Mobile behavior includes lifecycle changes and touch interaction.
Task: Test rotation or recreation, large text, empty data and invalid input on an actual emulator/device when available.
Acceptance: Record what ran; a wireframe is not an installed Android app.

My assumptions:

My work / file link:

My checks and results:

What I changed:
