VGV

Announcing Very Good Start: Scalable Flutter Starter App and Codebase

Additional Contributors
No items found.

TL;DR

Very Good Start is VGV’s proprietary Flutter app generator that starts every new project with a variety of features already implemented based on our proven scalable best practices. We are able to deliver weeks worth of work on the first day.


The Story of Very Good Start

We’ve had the privilege of building numerous Flutter apps since Google launched the framework in 2018

With each new project, we found ourselves setting up the same features and project structure over and over again with the usual elements like login, account management, push notification support, localization, state management, and more. It wasn’t long before we asked ourselves the inevitable question: Can this be automated? 

It can, we built it! With Very Good Start, we can now spin up a new codebase with all of our core requirements ready on the first day of development. What used to take us weeks to implement and configure manually for each project, we can now do in one day!


Why We Built Very Good Start

Consistency

As we’ve grown, we’ve had multiple teams working on multiple projects at the same time. It was obvious we needed to standardize our approach to creating Flutter apps regardless of the lead of the state management flavor of the week.

Very Good Start allows us to maintain consistency across all of our VGV projects. The architecture and file structure are the same so we can immediately get to work building features. Most importantly, everyone on our team knows exactly how to contribute to each codebase. Consistency in the code is crucial to being able to scale teams and onboard new developers.

This makes for a boring codebase — one that is easy to navigate, and one that allows us to focus our time to work on more interesting challenges. You know, the ones that set your app apart from all of the others.

To ensure that we’re keeping with our commitment to writing very good code, we created a package with custom lint rules that we use internally called very_good_analysis as well as very_good_coverage which ensures 100% of the code is tested. Both of these packages are also open sourced.

Opinionated Architecture

Very Good Start represents the “VGV Way” of architecting apps. App architecture is an area of great debate, and Very Good Start is what we at Very Good Ventures believe makes a successful, scalable Flutter app. After working with numerous clients and shipping many high-scale project apps, we can confidently say that our scalable architecture in Very Good Start is effective, efficient, and proven. That’s not to say there aren’t different or better ways to do things, but this approach has worked wonderfully for us and our enterprise-level clients. Now, we are making it standard for all of our projects.

What’s the best state management solution for our Flutter app? What should we use for our backend? Very Good Start is our take on reliable, proven architecture. For example, with scalable, large projects, we’ve had major success with bloc for state management, so that’s what we’ve chosen to use for all of the apps we work on. We’ve also decided to leverage the Firebase ecosystem for an efficient and scalable backend. Fortunately, we’ve also built it to be flexible, so you can swap packages out or change things after you spin up your app to customize to your unique needs!

The point is that we’ve made opinionated decisions so you don’t have to! We’ve chosen all of the packages, solutions, and structure that we’ve proven to work for enterprise-grade mobile apps — we’ve committed to these solutions in Very Good Start so you can focus on what you set out to do: build an app.

Speed to Meaningful Paint

Nothing beats the first time you demo a real feature with your app’s design implemented. We love that feeling and we want to focus our time on building features that differentiate the products that we’re creating.

But, all apps need setup, configuration, and a set of underlying “invisible” features to be successful at scale. All apps need things like crash reporting, logging, analytics, localization, and so on. These requirements are essential, but they’re not fun or differentiated.

So, we included all of the typical things we build into every app in Very Good Start. So rather than spending the first weeks of a project working on things we’ve done hundreds of times, we simply have it on day one!

Completely Customizable

Great architecture is half of the battle. Your app needs to look good and work for all of the flavors that you need. Web compatible? ✅ Your logo, color theme, and typography? ✅ Multiple flavor support? ✅

With just a few details up front, we can spin up a starter app that looks how you’ve envisioned with quite literally minutes.

How We Built It

We took a step back from our client projects and asked ourselves how we could more efficiently bootstrap new Flutter projects — what are all of the common components and features we need? With that list in mind, we created a new repo and opened GitHub issues for each feature. 

Then we treated this as an internal open source project and started tackling each issue. We invited all of our teammates to contribute to the private codebase and suggest new features and improvements. Before diving into the code, we made sure to have strong documentation for our reasoning behind each decision and the overall structure and architecture of the project.

We implemented all of our requirements into a real codebase that runs as a real app. That way our team can add new features and test them efficiently. We use mason, an open source template generator, to generate the core codebase and customize it to be unique to the new project. Each new app goes from zero to hero with a single commit.

How You Can Get a Very Good Start

We’ve turned our years of experience building Flutter apps, and helping companies switch their native codebases over to Flutter, into a repeatable process for starting new Flutter apps on the right foot. Very Good Start is our tool for kickstarting new Flutter app development projects and ensuring each project is set up to scale consistently. It's intended for development teams to accelerate their development process with Flutter.

New Apps

We use Very Good Start for most new apps we create. If you are a company starting a new Flutter app, we can help get you set up with a proven, scalable architecture. Even better, your app will already have a variety of essential features and services on the first code commit. 

Existing Apps

If you have an existing Flutter app, you can benefit from Very Good Start too. It can be used as a new foundational architecture where existing code can be ported into a new framework, or we can pick and choose features to add to the existing code.

Over the last several months, we’ve done Code Assessments for a variety of companies big and small. During these assessments we evaluate a Flutter codebase according to our strict set of criteria and best practices. We make recommendations and implement improvements to ensure each app is built to the highest standards.

Sometimes our recommendation is to simply start over as it’s often more efficient to start with a clean slate and pull in existing features than to refactor a complex app over time. In these cases, Very Good Start is an immensely valuable tool that drastically accelerates the rebuild process.

Ultimately, Very Good Start is one of our secret weapons to help our clients move fast with Flutter. We love it (and so do our clients) because the very first line of code we have to write is for a new feature.

Very Good Core

We also believe it is important to share our approaches and ideals with the community. With this in mind, we developed a free, simplified version of Very Good Start called Very Good Core. It contains some of the basic features of Very Good Start as well as the usual counter app. This option is great for solo developers looking for a very good foundation that they can build upon, but who may not need an enterprise-grade codebase. Try out Very Good Core with our CLI tool!

Interested in getting a Very Good Start on your next Flutter project? Let’s chat! 

Read More

More from the VGV Blog

Flutter 5 Questions

December 10, 2019
By 
David DeRemer
Flutter