diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/bug_report.md b/packages/mini_app/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..50a4c7b8 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug Report +about: Create a report to help us improve +title: "fix: " +labels: bug +--- + +**Description** + +A clear and concise description of what the bug is. + +**Steps To Reproduce** + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected Behavior** + +A clear and concise description of what you expected to happen. + +**Screenshots** + +If applicable, add screenshots to help explain your problem. + +**Additional Context** + +Add any other context about the problem here. diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/build.md b/packages/mini_app/.github/ISSUE_TEMPLATE/build.md new file mode 100644 index 00000000..0cf8e62c --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/build.md @@ -0,0 +1,14 @@ +--- +name: Build System +about: Changes that affect the build system or external dependencies +title: "build: " +labels: build +--- + +**Description** + +Describe what changes need to be done to the build system and why. + +**Requirements** + +- [ ] The build system is passing diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/chore.md b/packages/mini_app/.github/ISSUE_TEMPLATE/chore.md new file mode 100644 index 00000000..498ebfd8 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/chore.md @@ -0,0 +1,14 @@ +--- +name: Chore +about: Other changes that don't modify src or test files +title: "chore: " +labels: chore +--- + +**Description** + +Clearly describe what change is needed and why. If this changes code then please use another issue type. + +**Requirements** + +- [ ] No functional changes to the code diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/ci.md b/packages/mini_app/.github/ISSUE_TEMPLATE/ci.md new file mode 100644 index 00000000..fa2dd9e2 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/ci.md @@ -0,0 +1,14 @@ +--- +name: Continuous Integration +about: Changes to the CI configuration files and scripts +title: "ci: " +labels: ci +--- + +**Description** + +Describe what changes need to be done to the ci/cd system and why. + +**Requirements** + +- [ ] The ci system is passing diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/config.yml b/packages/mini_app/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..ec4bb386 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/documentation.md b/packages/mini_app/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 00000000..f494a4d9 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,14 @@ +--- +name: Documentation +about: Improve the documentation so all collaborators have a common understanding +title: "docs: " +labels: documentation +--- + +**Description** + +Clearly describe what documentation you are looking to add or improve. + +**Requirements** + +- [ ] Requirements go here diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/feature_request.md b/packages/mini_app/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..ddd2fcca --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,18 @@ +--- +name: Feature Request +about: A new feature to be added to the project +title: "feat: " +labels: feature +--- + +**Description** + +Clearly describe what you are looking to add. The more context the better. + +**Requirements** + +- [ ] Checklist of requirements to be fulfilled + +**Additional Context** + +Add any other context or screenshots about the feature request go here. diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/performance.md b/packages/mini_app/.github/ISSUE_TEMPLATE/performance.md new file mode 100644 index 00000000..699b8d45 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/performance.md @@ -0,0 +1,14 @@ +--- +name: Performance Update +about: A code change that improves performance +title: "perf: " +labels: performance +--- + +**Description** + +Clearly describe what code needs to be changed and what the performance impact is going to be. Bonus point's if you can tie this directly to user experience. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/refactor.md b/packages/mini_app/.github/ISSUE_TEMPLATE/refactor.md new file mode 100644 index 00000000..1626c570 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/refactor.md @@ -0,0 +1,14 @@ +--- +name: Refactor +about: A code change that neither fixes a bug nor adds a feature +title: "refactor: " +labels: refactor +--- + +**Description** + +Clearly describe what needs to be refactored and why. Please provide links to related issues (bugs or upcoming features) in order to help prioritize. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/revert.md b/packages/mini_app/.github/ISSUE_TEMPLATE/revert.md new file mode 100644 index 00000000..9d121dc5 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/revert.md @@ -0,0 +1,16 @@ +--- +name: Revert Commit +about: Reverts a previous commit +title: "revert: " +labels: revert +--- + +**Description** + +Provide a link to a PR/Commit that you are looking to revert and why. + +**Requirements** + +- [ ] Change has been reverted +- [ ] No change in test coverage has happened +- [ ] A new ticket is created for any follow on work that needs to happen diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/style.md b/packages/mini_app/.github/ISSUE_TEMPLATE/style.md new file mode 100644 index 00000000..02244a7b --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/style.md @@ -0,0 +1,14 @@ +--- +name: Style Changes +about: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc) +title: "style: " +labels: style +--- + +**Description** + +Clearly describe what you are looking to change and why. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/packages/mini_app/.github/ISSUE_TEMPLATE/test.md b/packages/mini_app/.github/ISSUE_TEMPLATE/test.md new file mode 100644 index 00000000..431a7ea7 --- /dev/null +++ b/packages/mini_app/.github/ISSUE_TEMPLATE/test.md @@ -0,0 +1,14 @@ +--- +name: Test +about: Adding missing tests or correcting existing tests +title: "test: " +labels: test +--- + +**Description** + +List out the tests that need to be added or changed. Please also include any information as to why this was not covered in the past. + +**Requirements** + +- [ ] There is no drop in test coverage. diff --git a/packages/mini_app/.github/PULL_REQUEST_TEMPLATE.md b/packages/mini_app/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..11699363 --- /dev/null +++ b/packages/mini_app/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,27 @@ + + +## Status + +**READY/IN DEVELOPMENT/HOLD** + +## Description + + + +## Type of Change + + + +- [ ] โœจ New feature (non-breaking change which adds functionality) +- [ ] ๐Ÿ› ๏ธ Bug fix (non-breaking change which fixes an issue) +- [ ] โŒ Breaking change (fix or feature that would cause existing functionality to change) +- [ ] ๐Ÿงน Code refactor +- [ ] โœ… Build configuration change +- [ ] ๐Ÿ“ Documentation +- [ ] ๐Ÿ—‘๏ธ Chore diff --git a/packages/mini_app/.github/cspell.json b/packages/mini_app/.github/cspell.json new file mode 100644 index 00000000..e8c0829f --- /dev/null +++ b/packages/mini_app/.github/cspell.json @@ -0,0 +1,21 @@ +{ + "version": "0.2", + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "dictionaries": ["vgv_allowed", "vgv_forbidden"], + "dictionaryDefinitions": [ + { + "name": "vgv_allowed", + "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/allowed.txt", + "description": "Allowed VGV Spellings" + }, + { + "name": "vgv_forbidden", + "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/forbidden.txt", + "description": "Forbidden VGV Spellings" + } + ], + "useGitignore": true, + "words": [ + "mini_app" + ] +} diff --git a/packages/mini_app/.github/dependabot.yaml b/packages/mini_app/.github/dependabot.yaml new file mode 100644 index 00000000..63b035cd --- /dev/null +++ b/packages/mini_app/.github/dependabot.yaml @@ -0,0 +1,11 @@ +version: 2 +enable-beta-ecosystems: true +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "pub" + directory: "/" + schedule: + interval: "daily" diff --git a/packages/mini_app/.github/workflows/main.yaml b/packages/mini_app/.github/workflows/main.yaml new file mode 100644 index 00000000..cf84703d --- /dev/null +++ b/packages/mini_app/.github/workflows/main.yaml @@ -0,0 +1,25 @@ +name: ci + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + pull_request: + branches: + - main + +jobs: + semantic_pull_request: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 + + spell-check: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1 + with: + includes: "**/*.md" + modified_files_only: false + + build: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 + with: + flutter_channel: stable diff --git a/packages/mini_app/.gitignore b/packages/mini_app/.gitignore new file mode 100644 index 00000000..06ef8e61 --- /dev/null +++ b/packages/mini_app/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# VSCode related +.vscode/* + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ +pubspec.lock + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Test related +coverage \ No newline at end of file diff --git a/packages/mini_app/README.md b/packages/mini_app/README.md new file mode 100644 index 00000000..2eb18ff5 --- /dev/null +++ b/packages/mini_app/README.md @@ -0,0 +1,67 @@ +# Mini App + +[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link] +[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason) +[![License: MIT][license_badge]][license_link] + +A set of necessary utilities for creating mini applications (services) + +## Installation ๐Ÿ’ป + +**โ— In order to start using Mini App you must have the [Flutter SDK][flutter_install_link] installed on your machine.** + +Install via `flutter pub add`: + +```sh +dart pub add mini_app +``` + +--- + +## Continuous Integration ๐Ÿค– + +Mini App comes with a built-in [GitHub Actions workflow][github_actions_link] powered by [Very Good Workflows][very_good_workflows_link] but you can also add your preferred CI/CD solution. + +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 Workflows][very_good_coverage_link]. + +--- + +## Running Tests ๐Ÿงช + +For first time users, install the [very_good_cli][very_good_cli_link]: + +```sh +dart pub global activate very_good_cli +``` + +To run all unit tests: + +```sh +very_good test --coverage +``` + +To view the generated coverage report you can use [lcov](https://github.com/linux-test-project/lcov). + +```sh +# Generate Coverage Report +genhtml coverage/lcov.info -o coverage/ + +# Open Coverage Report +open coverage/index.html +``` + +[flutter_install_link]: https://docs.flutter.dev/get-started/install +[github_actions_link]: https://docs.github.com/en/actions/learn-github-actions +[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg +[license_link]: https://opensource.org/licenses/MIT +[logo_black]: https://raw.githubusercontent.com/VGVentures/very_good_brand/main/styles/README/vgv_logo_black.png#gh-light-mode-only +[logo_white]: https://raw.githubusercontent.com/VGVentures/very_good_brand/main/styles/README/vgv_logo_white.png#gh-dark-mode-only +[mason_link]: https://github.com/felangel/mason +[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg +[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis +[very_good_cli_link]: https://pub.dev/packages/very_good_cli +[very_good_coverage_link]: https://github.com/marketplace/actions/very-good-coverage +[very_good_ventures_link]: https://verygood.ventures +[very_good_ventures_link_light]: https://verygood.ventures#gh-light-mode-only +[very_good_ventures_link_dark]: https://verygood.ventures#gh-dark-mode-only +[very_good_workflows_link]: https://github.com/VeryGoodOpenSource/very_good_workflows diff --git a/packages/mini_app/analysis_options.yaml b/packages/mini_app/analysis_options.yaml new file mode 100644 index 00000000..bb720914 --- /dev/null +++ b/packages/mini_app/analysis_options.yaml @@ -0,0 +1 @@ +include: package:very_good_analysis/analysis_options.6.0.0.yaml diff --git a/packages/mini_app/coverage_badge.svg b/packages/mini_app/coverage_badge.svg new file mode 100644 index 00000000..499e98ce --- /dev/null +++ b/packages/mini_app/coverage_badge.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + coverage + coverage + 100% + 100% + + diff --git a/packages/mini_app/lib/mini_app.dart b/packages/mini_app/lib/mini_app.dart new file mode 100644 index 00000000..eaf4ee64 --- /dev/null +++ b/packages/mini_app/lib/mini_app.dart @@ -0,0 +1,4 @@ +/// A set of necessary utilities for creating mini applications (services) +library; + +export 'src/mini_app.dart'; diff --git a/packages/mini_app/lib/src/mini_app.dart b/packages/mini_app/lib/src/mini_app.dart new file mode 100644 index 00000000..1811791f --- /dev/null +++ b/packages/mini_app/lib/src/mini_app.dart @@ -0,0 +1,7 @@ +/// {@template mini_app} +/// A set of necessary utilities for creating mini applications (services) +/// {@endtemplate} +class MiniApp { + /// {@macro mini_app} + const MiniApp(); +} diff --git a/packages/mini_app/pubspec.yaml b/packages/mini_app/pubspec.yaml new file mode 100644 index 00000000..c42dcba2 --- /dev/null +++ b/packages/mini_app/pubspec.yaml @@ -0,0 +1,18 @@ +name: mini_app +description: A set of necessary utilities for creating mini applications (services) +version: 0.1.0+1 +publish_to: none + +environment: + sdk: ^3.5.0 + flutter: ^3.24.0 + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + mocktail: ^1.0.4 + very_good_analysis: ^6.0.0 diff --git a/packages/mini_app/test/src/mini_app_test.dart b/packages/mini_app/test/src/mini_app_test.dart new file mode 100644 index 00000000..445993f5 --- /dev/null +++ b/packages/mini_app/test/src/mini_app_test.dart @@ -0,0 +1,12 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:flutter_test/flutter_test.dart'; +import 'package:mini_app/mini_app.dart'; + +void main() { + group('MiniApp', () { + test('can be instantiated', () { + expect(MiniApp(), isNotNull); + }); + }); +}