FlutterInit uses Handlebars templates, not an LLM, to emit Flutter scaffolds. Same inputs always produce the same architecture, deps, and AI context files.
FlutterInit does not ask an LLM to invent your project structure. It renders Handlebars templates with a typed config: architecture, state, backend, navigation, misc flags. Same inputs → same files. That’s deliberate.
What “AI-generated boilerplate” gets wrong
Asking ChatGPT for a “Clean Architecture Flutter starter” produces:
Slightly different folder names every time
Half-wired dependencies
Auth that almost compiles
No shared vocabulary for the next agent
You spend the first week normalizing what the model improvised. That’s the opposite of a scaffold.
What deterministic generation guarantees
Our generator (generateFlutterScaffold on web; CLI overlay after flutter create) merges:
Conditional files use flags like (isBloc)@auth_bloc.dart.hbs. Riverpod projects don’t get leftover Bloc files. Dio code only appears when you enable it.
Where AI does belong
AI is excellent at extending a known structure. It’s poor at inventing a stable team standard from a blank chat.
Templates lag fashion. New packages land when we wire them — not when Twitter does.
Feature-First and Clean layouts are intentionally close today; docs and agent rules carry a lot of the distinction.
You won’t get a one-off “creative” folder layout. That’s the point.
Who this is for
Teams that want repeatable starters across clients or products. Solo builders who want agents to behave. Anyone tired of re-explaining architecture in every chat.