flutter_clean_arch_scaffold

Flutter Clean Architecture 구조를 기존 Flutter 프로젝트에 복제하는 CLI입니다.

flutter create로 만든 프로젝트에 packages/domain, data, presentation, designmelos.yaml을 추가합니다.
android/, ios/ 설정은 건드리지 않습니다.


사용 방법

아래를 위에서부터 순서대로 실행하세요.

# CLI 설치 (최초 1회)
dart pub global activate flutter_clean_arch_scaffold

# PATH 설정 (~/.pub-cache/bin)
export PATH="$PATH:$HOME/.pub-cache/bin"

# 새 Flutter 프로젝트
flutter create my_app
cd my_app

# Clean Architecture 구조 복제 + payment 예시 feature
flutter_clean_arch init

# lib/main.dart 수정 — init이 기존 main.dart를 유지한 경우 필수
# import 'di.dart'; 추가 후 main() 맨 앞에 configureDependencies(); 호출

# 새 feature 추가 (payment 예시를 참고)
flutter_clean_arch add feature order --with-ui

# 의존성 설치 + 코드 생성
dart pub global activate melos
melos bootstrap
melos run build:all

# 앱 실행
flutter run

lib/main.dart 수정 (중요)

flutter create 직후 init을 실행하면 기존 lib/main.dart는 유지됩니다.
DI가 동작하려면 아래를 직접 추가해야 합니다.

import 'di.dart';

void main() {
  configureDependencies(); // ← runApp()보다 먼저 호출
  runApp(const MainApp());
}

init --force를 쓰면 main.dart가 템플릿으로 교체되어 위 코드와 PaymentPage 홈 화면이 포함됩니다.

initpayment 예시 feature도 함께 생성합니다 (domain / data / presentation 전 레이어).


생성되는 구조

my_app/
├── android/                  # flutter create 결과 (그대로)
├── ios/
├── lib/
│   ├── main.dart
│   └── di.dart               # init이 생성
├── packages/
│   ├── domain/               # entity, repository, usecase
│   ├── data/                 # datasource, dto, mapper, repository impl
│   ├── presentation/         # provider, page
│   └── design/               # 디자인 시스템, assets
└── melos.yaml

레이어 의존

presentation → domain
data         → domain
design       → (독립)

feature 폴더 예시 (add feature payment --with-ui)

packages/domain/lib/domain/payment/
  entity/  repository/  usecase/

packages/data/lib/data/payment/
  datasource/  dto/  mapper/  repository/

packages/presentation/lib/payment/
  provider/  page/

data 레이어 흐름

API (JSON) → datasource (compute) → dto → mapper → entity → usecase → UI

명령어

명령 설명
flutter_clean_arch init Clean Architecture 구조 복제
flutter_clean_arch add feature <name> feature 스캐폴딩
flutter_clean_arch add feature <name> --with-ui presentation 포함
flutter_clean_arch add feature <name> --with-local local datasource 포함
flutter_clean_arch add feature <name> --methods a,b 메서드 stub 지정
flutter_clean_arch init --force 기존 파일 덮어쓰기
flutter_clean_arch init --skip-build build_runner 생략

feature 이름: snake_case (예: payment, user_profile)


문제 해결

command not found: flutter_clean_arch

export PATH="$PATH:$HOME/.pub-cache/bin"

영구 적용: ~/.zshrc에 위 줄 추가 후 source ~/.zshrc

templates 오류 / 이상한 동작 / 옛 버전이 실행됨

CLI 캐시를 지우고 재설치하세요.

dart pub global deactivate flutter_clean_arch_scaffold
dart pub global activate flutter_clean_arch_scaffold

PATH 없이 실행

dart pub global run flutter_clean_arch_scaffold:flutter_clean_arch init

pub.dev 문서 안내

위치 파일 내용
패키지 카드 짧은 설명 pubspec.yamldescription 검색 결과에 보이는 한 줄 요약
패키지 상세 페이지 tools/cli/README.md (이 파일) 설치법, 구조, 명령어 전체

README를 수정한 뒤 pub.dev에 반영하려면 버전을 올리고 재배포합니다.

cd tools/cli
# pubspec.yaml version bump + CHANGELOG
dart pub publish

링크

Libraries