Canvas-v2 is an Android demo application showcasing:
Drag-and-drop from a bottom carousel into a central canvas. Pinch-to-zoom, pan, bring-to-front. Ghost overlay preview when dragging. Persistent canvas state (Room DB). Cache-first image loading with mock “network” backend. MVI + Clean Architecture layering (shared domain/data + feature modules).
🚀 Features
Start Feature. Loads image metadata using a cache-first repository. Displays a loading screen while cache is empty. Fetches from a fake network API and updates the Room cache. Automatically navigates to the main screen when ready.
Main Canvas Feature. Horizontal image carousel (populated from Room cache). Long-press → drag image → preview ghost overlay. Drop into canvas. Move, pan, zoom with multi-touch gestures. Double tap an image to bring image to fron. Canvas state automatically persisted. Move canvas image outside of canvas to delete the image.
💾 Persistence Model Images (Room) Loaded from cache or fake network
🧪 Tools & Libraries
Jetpack Compose
Room
Hilt
Kotlin coroutines + Flow
MVI pattern
📎 Notes
Fake network API returns hardcoded image identifiers. Replace with Retrofit easily—interface already defined. Canvas persistence uses Room.