flutist 3.0.1
flutist: ^3.0.1 copied to clipboard
A Flutter project management framework inspired by Tuist
example/README.md
Flutist Example #
This example demonstrates a Flutter project structured with Flutist using layer-based module declarations.
📁 Configuration Files #
package.dart #
Central registry for all dependencies and module names.
No type: field — modules are plain named references.
project.dart #
Defines every layer package and its dependency wiring.
Layer relationships follow architecture rules enforced by flutist check.
flutist/flutist_gen.dart #
Auto-generated by flutist generate. Provides type-safe accessors:
package.dependencies.http, package.modules.authDomain, etc.
🚀 Getting Started #
# 1. Initialize
flutist init
# 2. Create modules — layer packages are auto-wired in project.dart
flutist create --path features --name auth --options clean
flutist create --path lib --name network --options lite
flutist create --path core --name utils # single package (default)
# 3. Add dependencies in package.dart, then generate
flutist generate
# 4. Check architecture rules
flutist check
📦 Module Structure (this example) #
my_flutter_project/
├── app/ # Simple — app shell
├── features/
│ └── auth/
│ ├── auth_domain/ # Clean — domain layer
│ ├── auth_data/ # Clean — data layer
│ └── auth_presentation/ # Clean — presentation layer
├── lib/
│ └── network/
│ ├── network_interface/ # Lite — public API
│ ├── network_implementation/ # Lite — core logic
│ ├── network_testing/ # Lite — test utilities
│ └── network_tests/ # Lite — tests
└── core/
└── utils/ # Simple — shared utilities
🏗️ Scaffold Types #
| Option | Layers | Use for |
|---|---|---|
--options clean |
domain / data / presentation | Feature modules |
--options micro |
interface / implementation / testing / tests / example | Reusable libraries |
--options lite |
interface / implementation / testing / tests | Internal API modules |
| (omit) | single package | App shell, utilities |
🔗 Layer Dependency Rules #
Clean Architecture #
presentation → data → domain
Domain knows nothing about data or UI.
Lite / Micro Architecture #
implementation → interface
testing → interface
tests → implementation + testing
Production code (_implementation) must never depend on _testing.
🎨 Custom Scaffold Templates #
# List available templates
flutist scaffold list
# Generate from template
flutist scaffold feature --name login
flutist scaffold feature --name login --path lib/features --stateful true
Templates live in flutist/templates/. Customize freely — see flutist/templates/feature/ for an example.