Monorepo for the FlutterKaigi 2026 website and app.
apps/website/ — jaspr static siteapps/app/ — Flutter app (added later by the mobile maintainer)packages/ — shared Dart packages (none yet)Managed with melos (v7) on top of Dart pub workspaces, with Flutter pinned by FVM.
All other Dart/Flutter tooling is provided by FVM once installed.
# 1. Install FVM (one-time, global)
dart pub global activate fvm
# 2. Install the Flutter version pinned in .fvmrc
fvm install
# 3. Resolve workspace dependencies (installs melos + all package deps)
fvm dart pub get
# 4. Bootstrap melos (generates IDE files; dependency resolution is already done by step 3)
fvm dart run melos bootstrap
The pinned Flutter version is 3.41.7 (see .fvmrc).
| Command | What it does |
|---|---|
fvm dart run melos website:serve |
Run the jaspr website dev server on http://localhost:8080 |
fvm dart run melos website:build |
Build the jaspr website to apps/website/build/jaspr/ |
fvm dart run melos analyze |
Analyze all packages (website with dart analyze, app with flutter analyze) |
fvm dart run melos format |
dart format across all packages |
fvm dart run melos test |
Run tests across all packages (website with dart test, app with flutter test) |
Per-target variants are also available: analyze:website, analyze:app, test:website, test:app.
When the Flutter maintainer joins, they need to:
Create the app in the correct location:
cd apps
fvm flutter create app
Declare the app as a workspace member. Edit the top-level pubspec.yaml and add apps/app to the workspace: list:
workspace:
- apps/website
- apps/app
Mark the app package as a workspace resolution target. Edit apps/app/pubspec.yaml and add resolution: workspace near the top (Dart pub workspaces requirement):
name: app
resolution: workspace
environment:
sdk: ">=3.11.0 <4.0.0"
flutter: ">=3.41.0"
# ...
Delete the generated pubspec.lock inside apps/app/ — there is only one shared lockfile at the repo root with Dart pub workspaces.
Re-run fvm dart pub get at the repo root. fvm dart run melos analyze and fvm dart run melos test will now include the app automatically.
pubspec.yaml under the melos: key (melos 7 convention). Package membership is controlled by the root workspace: list, and scripts are defined under melos.scripts:. There is intentionally no separate melos.yaml.analysis_options.yaml at the repo root declares analyzer plugins (e.g., jaspr_lints). Dart pub workspaces require plugins at the workspace root, not inside sub-packages.pubspec.lock is a single file at the repo root (pub workspaces merges resolution). Sub-packages should not have their own pubspec.lock; delete it if one gets generated.