Developer setup
List Pilot is a Flutter app. This guide covers building and running from source.
Prerequisites
- Flutter SDK (stable channel, Dart 3.5+)
- Node.js 20+ (for documentation site only)
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 --coveragewith 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:
-
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 -- initOr with the GitHub CLI extension:
gh extension install mzbrau/gh-actions-insightsgh actions-insights init -
Create a PAT with
contents: writescoped tomzbrau/actions-insights-historyonly. -
Add the secret to this repository (
mzbrau/list-pilot):- Name:
ACTIONS_INSIGHTS_HISTORY_TOKEN - Value: the PAT from step 2
- Name:
-
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.