Show GN: Flutist : Flutter Modular Architecture 관리 프레임워크를 만들어봤습니다! (feat. Tuist)
(flutist-1pn8eqs9s-seonwookes-projects.vercel.app)Flutter 프로젝트의 규모가 커지면 빌드 성능과 레이어 격리를 위해 모듈화(패키지 분리)를 선택하게 됩니다. 하지만 모듈 수가 늘어날수록 수십 개의 pubspec.yaml을 관리하는 리소스가 늘어나고, 코드 리뷰만으로는 아키텍처 규칙을 강제하기 어려워집니다.
Flutist는 iOS의 Tuist에서 영감을 받아 Dart 3.6+의 pub workspaces 위에서 프로젝트의 명세와 규칙을 코드로 선언하고 관리할 수 있도록 설계된 프레임워크입니다.
"왜 Flutist인가요?"
-
선언적 프로젝트 구성
각 모듈의 pubspec.yaml을 직접 수정하는 대신, package.dart에 패키지 버전을, project.dart에 모듈 간 의존성 그래프를 선언합니다. 한 번의 정의로 모든 모듈의 pubspec.yaml이 flutist generate 명령으로 동기화됩니다. -
아키텍처 규칙의 자동 강제
클린 아키텍처에서 domain이 data를 직접 참조하거나 순환 의존성이 생겨도 pub은 막지 않습니다. flutist는 strictMode를 활성화 하여 이를 위반하면 generate시 에러를 띄웁니다. 문서/코드 리뷰에만 있던 원칙이 실행 가능한 규칙이 됩니다. -
타입 안정성과 생산성
문자열 기반의 패키지 참조 대신, 자동 생성된 접근자를 통해 IDE 자동 완성 및 컴파일 타임 타입 검사를 지원합니다. 또한, 반복적인 레이어 구조나 보일러플레이트 생성을 위한 스캐폴딩 기능을 제공하여 초기 설정 비용을 최소화합니다. -
개발 경험의 최적화
모듈별 병렬/개별 테스트 실행은 물론, flutist graph를 통해 복잡하게 얽힌 모듈 의존성을 브라우저에서 시각적으로 즉시 확인할 수 있습니다.
지원하는 모듈 타입 4가지
clean— Clean Architecture 3-layer (domain / data / presentation)micro— Microfeature 5-layer (interface / implementation / testing / tests / example)lite— micro에서 example 제거한 4-layersimple— 단일 패키지 (유틸, 공유 모델, 앱 셸용)
CLI 명령어
flutist init/create/generate/check/pub/scaffold/test/graphflutist check는 파일 생성 없이 아키텍처만 검사 → CI 파이프라인용flutist graph --open으로 mermaid 의존성 그래프를 브라우저에서 바로 확인
링크
- Docs: https://flutist-web.vercel.app/docs
- pub.dev: https://pub.dev/packages/flutist
- GitHub: https://github.com/seonwooke/flutist
Flutter 멀티 모듈 아키텍처를 고민하고 계신 분들이라면 flutist 도입을 추천드립니다. 피드백 주시면 적극 반영하도록 하겠습니다! 감사합니다🙏