Skip to content
Compose UICanvas APICommunity Challenge

ScribbleDash

A highly interactive digital canvas drawing app exploring raw Android UI drawing performance in Jetpack Compose.

Year
2025
Type
Community Challenge
ScribbleDash

The Overview

ScribbleDash is a drawing app that pushes Android's native drawing APIs through Jetpack Compose. Game modes like "One Round Wonder" raise the difficulty round by round, with real-time gesture capture, vector stroke rendering, and an Undo/Redo history stack.

The Challenge

Drawing in Compose means recalculating Bezier paths on every pointer event; without a careful rendering strategy, the draw loop stutters.

It gets harder once you hold paths in memory for an Undo/Redo stack of custom brush strokes — long sessions hit out-of-memory errors fast — while keeping the package layout clean enough to extend later.

Architecture & Technical Decisions

The drawing surface is a native Jetpack Compose Canvas in a layered, multi-package layout.

Instead of redrawing the whole canvas every frame, strokes are cached as Path objects so deep recomposition only fires when it has to. The Undo/Redo state keeps the last few strokes for fast cycles. The app is single-module, but packages like features/gamemodes/ and features/draw/ stay horizontally isolated, so a new game mode drops in without leaking logic across boundaries. Koin handles DI, keeping each game mode's state decoupled from the Compose UI.

Impact & Results

  • A steady 60 fps draw loop, from narrowing recomposition scope under high-frequency pointer events.
  • An Undo/Redo engine that holds up across long sessions without runaway heap growth.

The Tech Stack

Language Kotlin
UI Framework Jetpack Compose
DI Framework Koin
Design System Material Design 3
Testing & Debug JUnit & Timber