जब Flutter प्रोजेक्ट का आकार बढ़ता है, तो build performance और layer isolation के लिए modularization (पैकेज अलग करना) चुनना पड़ता है। लेकिन जैसे-जैसे modules की संख्या बढ़ती है, दर्जनों pubspec.yaml को मैनेज करने का resource cost भी बढ़ता है, और केवल code review के ज़रिए architecture rules को enforce करना मुश्किल हो जाता है.

Flutist, iOS के Tuist से प्रेरित, Dart 3.6+ के pub workspaces के ऊपर बनाया गया एक framework है, जिसे इस तरह डिज़ाइन किया गया है कि प्रोजेक्ट की specification और rules को code के रूप में declare और manage किया जा सके।

"Flutist क्यों?"

  1. declarative project configuration
    हर module के pubspec.yaml को सीधे edit करने के बजाय, package.dart में package version और project.dart में modules के बीच dependency graph declare किया जाता है। एक बार define करने पर सभी modules के pubspec.yaml, flutist generate कमांड से sync हो जाते हैं।

  2. architecture rules का automatic enforcement
    Clean Architecture में अगर domain सीधे data को refer करे या circular dependency बन जाए, तो भी pub उसे नहीं रोकता। flutist में strictMode enable करने पर ऐसा rule violate होने पर generate के समय error दिखता है। जो principles पहले सिर्फ documentation/code review तक सीमित थे, वे executable rules बन जाते हैं।

  3. type safety और productivity
    string-based package references की जगह, auto-generated accessors के ज़रिए IDE autocomplete और compile-time type checking मिलती है। साथ ही, repetitive layer structure या boilerplate generation के लिए scaffolding feature दिया गया है, जिससे initial setup cost कम होती है।

  4. developer experience का optimization
    module-wise parallel/individual test execution के अलावा, flutist graph के ज़रिए जटिल module dependencies को browser में visual रूप से तुरंत देखा जा सकता है।

समर्थित module types के 4 प्रकार

  • clean — Clean Architecture 3-layer (domain / data / presentation)
  • micro — Microfeature 5-layer (interface / implementation / testing / tests / example)
  • litemicro से example हटाया गया 4-layer
  • simple — single package (utils, shared models, app shell के लिए)

CLI कमांड्स

  • flutist init / create / generate / check / pub / scaffold / test / graph
  • flutist check बिना file generate किए केवल architecture को inspect करता है → CI pipeline के लिए
  • flutist graph --open से mermaid dependency graph को सीधे browser में देखा जा सकता है

लिंक

अगर आप Flutter multi-module architecture पर विचार कर रहे हैं, तो flutist अपनाने की सिफारिश है। आप feedback देंगे तो मैं उसे सक्रिय रूप से शामिल करने की कोशिश करूंगा! धन्यवाद🙏

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.