Skip to main content

Project Structure

Fluttron is a monorepo plus a project template generated by the CLI.

Repository Layout

Fluttron/
├── packages/
│ ├── fluttron_host/ # Host library (Flutter Desktop)
│ ├── fluttron_ui/ # Renderer library (Flutter Web)
│ └── fluttron_shared/ # Shared protocols
├── templates/ # CLI templates (app + web_package)
├── packages/fluttron_cli/ # CLI source
├── docs/ # Internal docs
├── website/ # Docusaurus documentation site
└── README.md

Generated Project Layout

After fluttron create, a project looks like:

hello_fluttron/
├── fluttron.json
├── host/ # Flutter Desktop app
└── ui/ # Flutter Web app

fluttron.json

Manifest for the project. Key fields:

  • entry.uiProjectPath: UI project folder (ui)
  • entry.hostAssetPath: Host assets folder (host/assets/www)
  • entry.index: entry file (default index.html)
  • window: title and size for the host window

host/

The host app loads Web assets from assets/www and exposes services.

Key files:

  • host/lib/main.dart: entry point, calls runFluttronHost()
  • host/assets/www/: Web build output (populated by fluttron build)
  • host/assets/www/ext/: external frontend runtime assets (for example main.js, main.css)
  • host/assets/www/ext/packages/: collected web package assets (for example ext/packages/my_pkg/main.js)

ui/

The renderer app is a standard Flutter Web project.

Key files:

  • ui/lib/main.dart: entry point, calls runFluttronUi()
  • ui/lib/generated/web_package_registrations.dart: generated by fluttron build
  • ui/web/index.html: Flutter Web shell
  • ui/frontend/src/main.js: frontend source entry
  • ui/web/ext/: frontend runtime output used by index.html
  • ui/scripts/build-frontend.mjs: frontend build/clean script

Generated Web Package Layout

After fluttron create --type web_package, a package looks like:

my_web_package/
├── fluttron_web_package.json
├── pubspec.yaml
├── lib/
├── frontend/
└── web/ext/

Key points:

  • fluttron_web_package.json declares view factories and assets.
  • pubspec.yaml includes fluttron_web_package: true marker.
  • frontend/ builds JavaScript/CSS into web/ext/.

Next Steps