Clean architecture

Pros and cons

What this folder rule costs, and what it keeps obvious.

clean-architectureflutter

What you gain

One directory is the feature. Reading a save means staying inside features/notes/ until you hit app/providers.dart. Deleting the feature is closer to deleting the folder, plus the lines in the composition root and the route table.

The tile, the notifier, and the entity travel together, so a layout change does not hunt through four top-level trees.

What it costs

Shared rules need a kernel. ValidationFailure lives in shared/ so notes does not become a junk drawer for the next feature. Skip that and the first feature turns into an unofficial core.

The shell still sits outside the feature. Routes and providers are the tax. A use case that needs another feature's entity has to move the shared type out, or the dependency rule breaks.

Back to the introduction, or continue to when to use it.