Very Good Engineering
How our engineers build Dart and Flutter, in public.
Very Good Engineering is the handbook the VGV team works from. 30 guides on architecture, testing, state management, UI, and CI/CD, free to read, with every page ready to copy as Markdown into your AI coding tools.
Every guide, in one list.
General practices
04 guides
How the team thinks before it writes code.
- Our philosophy What Very Good Architecture asks of a codebase, and why.
- Conventions Semantic Versioning, Conventional Commits, Keep a Changelog, and Diátaxis.
- Code reviews Preparing a change for review, reviewing it, and merging it.
- Security in mobile apps Common threats and the OWASP MAS checklist.
Architecture
09 guides
Layers, packages, and the boundaries between them.
- Layered architecture Data, repository, business logic, and presentation, and how they depend on each other.
- Barrel files Exporting a package’s public files, with Bloc.
- Feature-First Clean Architecture A Flutter monorepo where every feature is a set of packages, with targets AI agents can write into.
- Project structure Dependency rules, naming, folder layout, monorepo tooling, and add-to-app.
- Domain layer Models, commands and queries, repository interfaces, and composing features.
- Data layer Data sources, DTOs, and mapping them onto domain models.
- Presentation layer Modules, localizations, and widgets that own state.
- Navigation Isolated features that navigate without importing each other’s routes, deep links included.
- FFCA FAQ Auth, user profiles, and one big OpenAPI file for every endpoint.
Development
15 guides
The day-to-day of writing, testing, and shipping Dart and Flutter.
- Code style Record types, widgets over helper methods, and what the linter misses. Code
- Code documentation Documenting the code that looks unfinished on purpose. Code
- Error handling Documenting what throws, and exceptions that say what went wrong. Code
- CI/CD The pipeline that tests, builds, and deploys every push. Delivery
- Testing overview How VGV reaches 100% test coverage, and how the tests are organized. Testing
- Testing best practices Test names, setup inside groups, private mocks, and no shared state. Testing
- Golden file testing Setting up Alchemist, writing golden tests, and tagging them. Testing
- State handling Which states a bloc or cubit emits, and when to keep the previous data. State
- Bloc event transformers Choosing the order Bloc handles events in, before a race condition does. State
- Layouts Rows, columns, parent and child sizing, wrapping, and scrolling. UI
- Routing overview Declarative routing with GoRouter on mobile and web. UI
- Theming ThemeData, typography, colors, component themes, and spacing. UI
- Widgets Pages and views, and standalone widgets over helper methods. UI
- Localization Localizing the frontend and the backend. i18n
- Text directionality Left-to-right and right-to-left layouts in Flutter. i18n
Resources
02 guides
A worked example, and the services the team has shipped with.
From the engineering team.
-
AI Product Development 7 min David DeRemer · Oct 29, 2026 Building an RPG inside Claude Code to learn Claude Mods
-
Flutter Expertise 7 min David Castaño · Oct 23, 2026 The iPhone Duo is selling out. Is your app ready?
-
AI Product Development 11 min Ana Polo · Oct 8, 2026 Giving an AI Agent the Keys: Agentic Workflows with Claude and Flutter
Where to start.
- Architecture Feature-First Clean Architecture A Flutter monorepo where every feature is a set of packages, with targets AI agents can write into. Read the guide
- Testing Testing overview How VGV reaches 100% test coverage, and how the tests are organized. Read the guide
- Security Security in mobile apps Common threats and the OWASP MAS checklist. Read the guide
- Start here Our philosophy What Very Good Architecture asks of a codebase, and why. Read the guide
We’ll care about your success as much as you do.
Our unicorns read every message and reply, usually the same day.
Start the conversationA 30-minute call about what you’re building.






