|
|
|
|
# compass_app
|
|
|
|
|
|
|
|
|
|
The Compass sample application is an app that helps users build and book
|
|
|
|
|
itineraries for trips. It’s a robust sample application with many features, routes, and screens. The app communicates
|
|
|
|
|
with an HTTP server, has development and production environments, brand-specific styling, and high test coverage. In
|
|
|
|
|
these ways and more, it simulates a real-world, feature rich Flutter application.
|
|
|
|
|
|
|
|
|
|
The code in this application is used for explaining architecture in a Flutter application.
|
|
|
|
|
|
|
|
|
|
![compass app splash screen](./docs/Global%20—%20Splash.png)
|
|
|
|
|
![compass app activities screen](./docs/Legacy%20—%20Activities.png)
|
|
|
|
|
![compass app home screen](./docs/Legacy%20—%20Home.png)
|
|
|
|
|
![compass app booking screen](./docs/Legacy%20—%20Book.png)
|
|
|
|
|
|
|
|
|
|
The Compass app was originally [designed and built by the Firebase GenKit team](https://developers.googleblog.com/en/how-firebase-genkit-helped-add-ai-to-our-compass-app/).
|
|
|
|
|
|
|
|
|
|
## Running the app
|
|
|
|
|
|
|
|
|
|
This app contains multiple environments.
|
|
|
|
|
|
|
|
|
|
* Development environment - This environment uses data from a JSON file, which is stored in the `assets` directory, and simulates developing locally.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ cd app
|
|
|
|
|
$ flutter run --target lib/main_development.dart
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* Staging environment - This environment uses an HTTP server to get data, simulating a real app experience. This is a "dummy" server, that has endpoints that simply return fake data. The server can be found in the `compass_app/server` directory. You need to run the server locally before running the Flutter application.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ cd server
|
|
|
|
|
$ dart run
|
|
|
|
|
# => Server listening on port 8080
|
|
|
|
|
|
|
|
|
|
$ cd ../compass_app/app
|
|
|
|
|
$ flutter run --target lib/main_staging.dart
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Integration Tests
|
|
|
|
|
|
|
|
|
|
Integration tests must be run from the `app` directory.
|
|
|
|
|
|
|
|
|
|
**Integration tests with local data**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd app
|
|
|
|
|
$ flutter test integration_test/app_local_data_test.dart
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Integration tests with background server and remote data**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd app
|
|
|
|
|
$ flutter test integration_test/app_server_data_test.dart
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Running the tests together with `flutter test integration_test` will fail.
|
|
|
|
|
See: https://github.com/flutter/flutter/issues/101031
|
|
|
|
|
|