You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/very_good_core.md
+72-14Lines changed: 72 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,20 +1,47 @@
1
-
# Very Good Core
1
+
# Very Good Core 🦄
2
2
3
3
[![Very Good Ventures][logo]][very_good_ventures_link]
4
4
5
5
Developed with 💙 by [Very Good Ventures][very_good_ventures_link] 🦄
6
6
7
-
![coverage][coverage_badge]
8
-
[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
9
-
[![License: MIT][license_badge]][license_link]
10
-
11
7
A Very Good Flutter Starter Project created by the [Very Good Ventures Team][very_good_ventures_link].
12
8
13
-
Generated by the [Very Good CLI][very_good_cli_link] 🤖
9
+
## Getting Started 🚀
14
10
15
-
---
11
+
**❗ In order to start using Very Good Core you must have the [Flutter SDK][flutter_install_link] installed on your machine.**
16
12
17
-
## Getting Started 🚀
13
+
### Installation 💻
14
+
15
+
For first time users, start by installing the [Very Good CLI from pub.dev][very_good_cli_link].
16
+
17
+
```sh
18
+
$ dart pub global activate very_good_cli
19
+
```
20
+
21
+
### Create a new Flutter Project 🆕
22
+
23
+
Then, you can use the `very_good create` command just like you would `flutter create`
24
+
25
+
![Very Good Create][very_good_create]
26
+
27
+
**💡 Upon first use, you will be prompted about anonymous usage statistics. You can adjust these settings at any time via the `--analytics` flag**
28
+
29
+
```sh
30
+
# opt into anonymous usage statistics
31
+
very_good --analytics true
32
+
33
+
# opt out of anonymous usage statistics
34
+
very_good --analytics false
35
+
```
36
+
37
+
### Running the Project ⚡
38
+
39
+
Once you have finished running `very_good create` with the project directory of your choice, you can change directories into the new project directory and install the dependencies
40
+
41
+
```sh
42
+
$ cd my_app
43
+
$ flutter packages get
44
+
```
18
45
19
46
This project contains 3 flavors:
20
47
@@ -37,9 +64,29 @@ $ flutter run --flavor production --target lib/main_production.dart
37
64
38
65
_\*Very Good Core works on iOS, Android, and Web._
39
66
67
+
Now your app is running 🎉
68
+
69
+
---
70
+
71
+
## Why Very Good Core? 🤔
72
+
73
+
We liked the simplicity and developer experience of running `flutter create` when getting started on a new project. We wanted to provide a similar experience with `very_good create` which built on top of `flutter create` and includes the core standards and best practices we use at [Very Good Ventures][very_good_ventures_link].
74
+
75
+
We built the CLI to be extensible so it could potentially support multiple commands and templates in the future.
76
+
77
+
## Project Structure and Architecture 🏗️
78
+
79
+
Although Very Good Core is fairly basic in terms of functionality, the architecture and project structure is intended to scale from a simple hobby project to a large production ready application.
80
+
81
+
A folder-by-feature project structure is used to maintain a modular project structure which helps the project scale as the number of features and/or developers increase. In Very Good Core there is only a single feature (`counter`) to start but that will quickly change as you build out your project. Each feature usually consists of a `view` and a `cubit` (or `bloc`). The view is responsible for holding the UI (`Widgets`) which the user sees and interacts with and the `cubit`/`bloc` is responsible for containing the business logic needed to manage the state of the feature. For more details [read our best practices for building scalable apps][scalable_best_practices_blog_link].
82
+
40
83
---
41
84
42
-
## Running Tests 🧪
85
+
## Testing 🧪
86
+
87
+
Very Good Core ships with 100% code coverage. To learn more about why we believe 100% code coverage is important and other testing best practices [read our guide to Flutter testing][very_good_testing_blog_link].
88
+
89
+
### Running Tests 🧑🔬
43
90
44
91
To run all unit and widget tests use the following command:
45
92
@@ -158,13 +205,24 @@ Update the `CFBundleLocalizations` array in the `Info.plist` at `ios/Runner/Info
158
205
}
159
206
```
160
207
161
-
[coverage_badge]: ../coverage_badge.svg
208
+
---
209
+
210
+
## Continuous Integration 🤖
211
+
212
+
Very Good Core comes with a built-in [GitHub Actions workflow][github_actions_link] but you can also add your preferred CI/CD solution.
213
+
214
+
Out of the box, on each pull request and push, the CI `formats`, `lints`, and `tests` the code. This ensures the code remains consistent and behaves correctly as you add functionality or make changes. The project uses [Very Good Analysis][very_good_analysis_link] for a strict set of analysis options used by our team. Code coverage is enforced using the [Very Good Coverage GitHub Action][very_good_coverage_link].
0 commit comments