Flutter starter app: Very Good Core & CLI

We built a VGV version of the Flutter starter app. Access it with one command via our CLI tool!

February 22, 2021
February 22, 2021
updated on
March 13, 2023
Guest Contributor

What is Very Good Core?

Our team created Very Good Core to provide a starter app option for developers looking for a very good foundation. It comes with our best practices and opinionated architecture. As with any starter app, feel free to build upon it, remove code, and make it your own!

Counter app generated from Very Good CLI
Counter app generated from Very Good CLI

Very Good Core Features

Very Good Core follows the Very Good Ventures way of architecting apps — this is not the only way, or the right way, it is simply the way that works best for us when building scalable applications and we want to make it available to the Flutter Community! 

Very Good Core includes the following features:

  • Cross Platform Support: Built-in support for iOS, Android, and Web (Desktop coming soon!)
  • Build Flavors: Multiple flavor support for development, staging, and production
  • Internationalization Support: Internationalization support using synthetic code generation to streamline the development process
  • Sound Null-Safety: No more null-dereference exceptions at runtime — develop with a sound, static type system
  • Bloc State Management: Integrated bloc architecture for scalable, testable code which offers a clear separation between business logic and presentation
  • Testing: Unit and Widget Tests with 100% line coverage (Integration Tests coming soon!)
  • Logging: Built-in, extensible logging to capture uncaught Flutter and Dart Exceptions
  • Very Good Analysis: Strict Lint Rules which are used at Very Good Ventures
  • Continuous Integration: Lint, format, test, and enforce code coverage using GitHub Actions

We also wrote a comprehensive guide that gives an overview of the app architecture, features, and more. View it on GitHub here.

How it works: Very Good CLI

You can bootstrap our very good Flutter app template, Very Good Core, with one command very_good create via our CLI tool.

Very Good CLI is a Command Line Interface for Dart. Currently the CLI has support for creating new Flutter projects from scratch. Initially, the only template we support is Very Good Core, but we may support additional feature-rich templates, so stay tuned for future releases.

Very Good CLI is built on top of mason, an open source template generator written in Dart, which helps developers generate files from custom templates called bricks. If you want to try building your own Flutter app template (or any template, for that matter), head over to the mason documentation for more.

Getting Started

To generate the Very Good Core starter app with Very Good CLI, just activate the very_good_cli package from pub.dev.

$ dart pub global activate very_good_cli

Then, run the create command in a new project directory (just like flutter create):

$ very_good create my_app

Voila, your new very good project has been created! 

Output after generating Very Good Core using Very Good CLI
Output after generating Very Good Core using Very Good CLI

Each project comes with the build flavors out of the box — development, staging, and production. You can run them by using the built-in launch configuration for VSCode and Android Studio or using the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

What about companies & development teams?

We think that Very Good Core will be most useful for individual developers looking to quickly bootstrap a project that has a built-in scalable templated foundation. For teams looking for an enterprise-grade starter app, we built Very Good Start, which we use in combination with our advisory services to accelerate app development.

View our open source software here.

More Stories