Differentiator
Custom Flutter Lint Package
Architecture rules fail the pull request. Consistency does not depend on one person.

How it works
A left-to-right map of the work. Ports stay on fixed sides so the edges do not cross more than they have to. Pan or pinch if you want a closer look.
- Production rules
- Lint package
- CI on every PR
- Architecture holds
warning • architecture • lib/features/orders/page.dart:41
avoid_presentation_importing_data
Presentation must talk to domain, not data sources.
The usual problem
- Presentation imports data because “just this once”.
- A lead’s review is the only architecture check, so quality drops when they are busy.
- Documentation is a wiki that nobody updates.
How I approach it
- Rules come from the production codebase, not from a generic linter preset.
- Architecture boundaries, coding standards, and documentation gates all run in CI.
- The same package is heading toward an open-source release.
Process
01
Extract
Rules taken from real production failures, not from a blog list.
02
Package
An internal Flutter lint package the whole org can depend on.
03
Enforce
CI runs it on every PR.
04
Share
In progress toward an open-source release.
Stack and tools
Custom Flutter lintArchitecture rulesDocumentation gatesCI on every PR
Proof from real work
What you get
- The lint package
- The rule list and what each rule is for
- CI wiring so a PR cannot skip it
How risk stays down
- Consistency does not depend on one reviewer being online.
- Architecture violations fail the build, not a later cleanup ticket.