Notes from building the templates.
Step-by-step guides on Flutter, Compose and shipping to the stores. Written while solving the problem, not after.
Course Progress in Flutter: The Player Position Is Not Progress
A progress bar that disagrees with itself across two devices, and a lesson download that expires mid-flight. Storing position so it can merge, queueing writes offline, and where a downloaded video actually belongs on disk.
8 Sep 2026 · 14 minListing Photos in Flutter: The Original Is Not the Asset You Serve
A phone camera makes 5 MB files and a feed of thirty listings makes the bill. Resizing before the upload, signing it so the bytes skip your API route, and the orphaned objects nobody ever deletes.
8 Sep 2026 · 13 minAI Features in Flutter: The Model Returns Text, Not a Type
Asking for JSON works forty times, then doesn't. Constraining the shape in the request, the two failures a strict schema does not remove, and where to put the parse.
2 Sep 2026 · 13 minPlay App Signing: The Key You Generate Is Not the Key That Ships
Google re-signs your bundle with a key you have never held. Which loss is recoverable, which is terminal, and why Google Sign-In works in debug and fails on launch day.
28 Aug 2026 · 12 minWhere to Put Your OpenAI API Key in a Flutter App: Not in the App
Every trick for hiding a key in a binary loses to unzip and strings. The one route handler that fixes it, streaming included, and what to do if you already shipped one.
18 Aug 2026 · 12 minHow to Change the App Name, Package ID and Icon in a Flutter Project
Every template you buy ships with someone else's bundle id. Here is the complete list of files to touch on Android and iOS, and the two places people always forget.
11 Aug 2026 · 8 min