Skip to main content

Developer setup

List Pilot is a Flutter app. This guide covers building and running from source.

Prerequisites​

Setup​

git clone https://github.com/mzbrau/list-pilot.git
cd list-pilot
flutter pub get
dart run build_runner build

Run​

flutter run

Test​

flutter test

Continuous integration​

Pushes to main and pull requests run .github/workflows/ci.yml, which:

  • Runs flutter analyze (build diagnostics)
  • Runs flutter test --coverage with JUnit XML output for Actions Insights
  • Publishes test reports as PR comments, workflow summaries, GitHub Checks, and an HTML artifact

Tests that depend on local-only Reference/ data are skipped in CI when that folder is absent.

Actions Insights history dashboard (one-time setup)​

The CI workflow can push trend data to a dedicated history repository. Complete these steps once before history appears on the dashboard:

  1. Initialize the history repository (creates mzbrau/actions-insights-history):

    curl -fsSL https://raw.githubusercontent.com/mzbrau/actions-insights/main/scripts/init-history-repo.sh | bash -s -- init

    Or with the GitHub CLI extension:

    gh extension install mzbrau/gh-actions-insights
    gh actions-insights init
  2. Create a PAT with contents: write scoped to mzbrau/actions-insights-history only.

  3. Add the secret to this repository (mzbrau/list-pilot):

    • Name: ACTIONS_INSIGHTS_HISTORY_TOKEN
    • Value: the PAT from step 2
  4. Register this repo in the history repository config (covered by the init script/docs).

History push is skipped on fork PRs (secrets are unavailable). After setup, push to main and confirm the Test Coverage and Build Insights tabs on the history dashboard.

Project structure​

lib/
core/ # Theme, constants, Riverpod providers
data/ # Drift database, repositories, seed loader
features/ # Screens and widgets
router/ # go_router configuration
assets/
seed_catalog.json
docs/ # Docusaurus documentation site

Releasing​

Releases are driven by git tags in the form vX.Y.Z:

./tool/set_version.sh v1.0.0
git add pubspec.yaml
git commit -m "Release v1.0.0"
git tag v1.0.0
git push origin main
git push origin v1.0.0

Pushing a tag triggers the GitHub Action that builds an Android APK (list-pilot-X.Y.Z.apk) and attaches it to a GitHub Release.

Local release builds​

Create android/key.properties (gitignored):

storePassword=<keystore-password>
keyPassword=<key-password>
keyAlias=upload
storeFile=app/upload-keystore.jks

Copy your keystore to android/app/upload-keystore.jks.

Documentation site​

The docs site lives in docs/ and deploys to GitHub Pages on pushes to main.

cd docs
npm ci
npm start # local dev server
npm run build

Enable GitHub Pages → Source: GitHub Actions in repository settings for deployment.

Site URL: https://mzbrau.github.io/list-pilot/

License​

Apache 2.0 — see LICENSE.