EdTech / Creative mobile apps (iOS & Android)Sep 2026

iDraw: Learn to Draw on Flutter

Most people who want to learn drawing end up between two bad options: follow a YouTube video and hope their hand keeps up, or open a blank canvas and freeze. Tutorials don’t score you. Sketch apps don’t teach. And “AI art” tools generate images instead of coaching the person holding the stylus. I wanted a phone app that teaches with clear steps, still feels like a real sketchbook when you freehand, and can give useful feedback when you’re stuck: without turning drawing into a gimmick.

Technologies

Flutter (Dart 3) · CustomPainter / dart:ui Picture caching · ChangeNotifier & ValueNotifier · Google Gemini (HTTP via proxy) · shared_preferences · path_provider · share_plus · gal · in_app_purchase (StoreKit / Play Billing) · google_mobile_ads · Firebase Analytics & Crashlytics · App Tracking Transparency · connectivity_plus · in_app_review · flutter_animate · Google Fonts · flutter_svg · flutter_localizations / intl

Tags

  • Flutter
  • Dart
  • mobile app
  • learn to draw
  • CustomPainter
  • drawing engine
  • edtech
  • Google Gemini
  • AI coach
  • in-app purchase

01

Problem

What had to be solved.

Most people who want to learn drawing end up between two bad options: follow a YouTube video and hope their hand keeps up, or open a blank canvas and freeze. Tutorials don’t score you. Sketch apps don’t teach. And “AI art” tools generate images instead of coaching the person holding the stylus. I wanted a phone app that teaches with clear steps, still feels like a real sketchbook when you freehand, and can give useful feedback when you’re stuck: without turning drawing into a gimmick.

02

My responsibility

What I owned.

Solo build under MAK Apps. Product direction, original lesson content and vector guides, Flutter architecture end to end, the drawing engine, AI coach flows, gallery and progress loop, monetization (subscriptions, credits, ads), localization, analytics/crash reporting, and store-facing polish (splash, onboarding, paywall).

03

Hard part

Where it got difficult.

The stroke has to feel right before anything else matters. On a phone that means single-finger filtering so a palm doesn’t scribble, light point thinning while you move, quadratic smoothing through midpoints so lines aren’t jaggy, brush presets (ink, pencil, marker, glow, eraser with BlendMode.clear), and mirror mode that redraws a flipped copy. Committed strokes are cached as a ui.Picture so only the live stroke repaints; toolbars listen separately so they don’t rebuild on every point. Lessons reuse that same engine: guides live in a tiny unit-square vector DSL, and a trace scorer compares your strokes to the guide paths (coverage + precision → 0–100 → stars). Getting that score fair enough to feel motivating, not punishing, took more iteration than the UI around it. The AI side was the other knot: critique, ideas, and step guides through a backend proxy so the device never holds a key, plus consent, quotas, credits, and defensive parsing when the model returns messy JSON.

04

What I built

The work that shipped.

A full Flutter learn-to-draw product:

Guided lessons across six categories (warm-ups, animals, nature, objects, food, characters): 18 original step-by-step traces with animated dashed guides, ghosted completed steps, accuracy scoring, auto-save, and confetti on finish

Drawing studio: five brushes, colour picker, grid, mirror, undo/redo, paper colours, PNG save and share

AI coach: critique a drawing, generate ideas, or get a step-by-step guide for a subject (Google Gemini via a Lovable chat proxy)

Gallery with zoom, share, delete, and AI score badges

Progress: XP, levels, streaks, 30 daily challenge prompts, profile stats

Growth layer: yearly/monthly/lifetime IAP, AI credit packs, AdMob, ATT, in-app review, Firebase Analytics & Crashlytics

Motion and polish: animated splash/logo, three-page onboarding with live vector art, paywall, and copy/UI localized across ~30 languages

Architecture stays flat on purpose: data/ for lessons and challenges, drawing/ for the canvas, services/ for state/AI/purchases/ads, screens/ and widgets/ for UI. Artwork, lessons, copy, icon, and code are original to the project.

05

Result

What changed.

The core loop works on device: open the app, draw a little, get a score or a coach note, save the piece, come back for the streak. Version is at 1.0.1; Play listing and privacy/terms URLs are wired. What’s left for a clean public push is mostly store product setup, server-side receipt validation for entitlements, and finishing the App Store side of the listing. The drawing feel and lesson pipeline are already the product, not a demo.