/shorebird

Code Push for Flutter and other tools for Flutter businesses.

Primary LanguageDartOtherNOASSERTION

Shorebird 🐦

Discord

ci e2e codecov License: MIT License: Apache

Home of the Shorebird Tools

Getting Started

Visit https://docs.shorebird.dev to get started.

Packages

This repository is a monorepo containing the following packages:

Package Description
shorebird_cli Command-line which allows developers to interact with various Shorebird services
shorebird_code_push_client Dart library which allows Dart applications to interact with the ShoreBird CodePush API
shorebird_code_push_protocol Dart library which contains common interfaces used by Shorebird CodePush
artifact_proxy Dart server which supports intercepting and proxying Flutter artifact requests.
discord_gcp_alerts Dart server which forwards GCP alerts to Discord
jwt Dart library for verifying Json Web Tokens
redis_client Dart library for interacting with Redis
scoped A simple dependency injection library built on Zones

For more information, please refer to the documentation for each package.

Contributing

If you're interested in contributing, please join us on Discord.

Environment setup

Working on Shorebird requires Dart and Rust.

Once both are installed, ./scripts/bootstrap.sh will run pub get all packages in the repository.

Running tests

We don't yet have a script to run tests locally. For now, we recommend using very_good test -r in the packages directory to run all shorebird tests.

(If you run it in the root, it will find packages in bin/cache/flutter and try to run tests there, some of which will fail.)

To generate a coverage report install lcov:

brew install lcov

Then run tests with the --coverage flag:

very_good test -r --coverage
genhtml coverage/lcov.info -o coverage

You can view the generated coverage report via:

open coverage/index.html

Tracking coverage

The following command will generate a coverage report for the Dart packages:

dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --check-ignore

Coverage reports are uploaded to Codecov.

License

Shorebird projects are licensed for use under either Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.

See our license philosophy for more information on why we license files this way: https://github.com/shorebirdtech/handbook/blob/main/engineering.md#licensing-philosophy