Files
fanuzu/app/pubspec.yaml
T

96 lines
4.7 KiB
YAML

name: fancake
description: "FANUZU — 팬덤 플랫폼 앱 (골격). 발주사 (주)팬케이크 / 수행사 스위치 주식회사"
publish_to: 'none'
version: 0.1.1+14
environment:
sdk: ^3.11.5
# ⚠️ 아래 의존성을 추가·변경·업그레이드하면 최소 지원 OS 하한을 재계산할 것.
# 절차: 2주차 플러그인 선검증 리포트 §3.5 · 배경은 README §2
# 최소 지원 OS 는 별첨1 v1.0 에 계약값으로 들어간다 — 값이 틀리면 계약이 틀린다.
dependencies:
flutter:
sdk: flutter
# 5탭 셸(StatefulShellRoute) + 온보딩 라우트. flutter.dev 팀이 관리하는 공식 라우터다.
go_router: ^17.4.0
# Firebase — 설정 파일(google-services.json / GoogleService-Info.plist)이 아직 없다.
# 없으면 FirebaseBoot 이 목(mock) 모드로 뜬다. 파일 투입 절차는 README 「미투입 항목」 참고.
firebase_core: ^4.13.0
firebase_auth: ^6.5.7
# 서버 연동 — 읽기는 Firestore 직결, 재화가 오가는 쓰기는 전부 Cloud Functions 를 지난다.
# 이 구분이 별첨1 ② 「클라이언트 단독 지급 0건」을 앱 쪽에서 지키는 방법이다.
cloud_firestore: ^6.3.0
cloud_functions: ^6.1.0
# Apple Sign-In nonce를 SHA-256으로 해시해 replay 공격을 막는다.
crypto: ^3.0.7
# 소셜 로그인 — Google·Apple 은 각 SDK, LINE 은 Firebase OIDC(SDK 없음), 카카오는 아래 SDK.
google_sign_in: ^7.2.0
sign_in_with_apple: ^8.1.0
# 카카오 로그인 — Kakao 공식 SDK. 카카오톡이 있으면 앱으로, 없으면 카카오계정 웹으로 로그인해
# 액세스 토큰을 받고 서버(fnAuthKakao)가 Firebase 커스텀 토큰으로 바꿔 준다. Android 에서
# Firebase OIDC 웹 흐름이 카카오톡 앱 전환 뒤 「missing initial state」로 깨져서 SDK 를 쓴다.
# 최소 OS 하한 영향 없음: Android minSdk 24(앱 29) · iOS 13.0(앱 15.0).
kakao_flutter_sdk_user: ^2.0.1
# LINE 로그인 — LINE 공식 SDK. LINE 앱이 있으면 앱으로, 없으면 SDK 웹 화면으로 로그인해 ID · 액세스 토큰을
# 받고 서버(fnAuthLine)가 Firebase 커스텀 토큰으로 바꿔 준다. iOS 에서 Firebase OIDC 웹 흐름이 첫 시도에
# 「missing initial state」로 깨져서 SDK 를 쓴다. 3.x 는 AGP 9 · Dart 3.12 전제라 2.x 를 쓴다.
# 최소 OS 하한 영향 없음: Android minSdk 24(앱 29) · iOS 13.0(앱 15.0).
flutter_line_sdk: ^2.7.2
dev_dependencies:
flutter_test:
sdk: flutter
# 기기 위에서 앱을 띄워 에뮬레이터와 실제 왕복을 돈다. 위젯 테스트는 네트워크를
# 타지 않으므로 「로그인 → 계정 문서 생성」은 여기서만 확인할 수 있다.
integration_test:
sdk: flutter
flutter_lints: ^6.0.0
# Firestore 연동 코드를 에뮬레이터 없이 검증한다. 쿼리·정렬·커서까지 흉내 내므로
# 「무엇을 읽어 무엇으로 옮기는가」를 실제로 돌려 볼 수 있다.
fake_cloud_firestore: ^4.0.0
firebase_auth_mocks: ^0.15.0
# 런처 아이콘 생성기. 개발 의존성이라 앱에 포함되지 않는다.
# 재생성: dart run flutter_launcher_icons
flutter_launcher_icons: ^0.14.4
# 카카오 SDK(encrypt → pointycastle 3)와 firebase_auth_mocks 0.15(dart_jsonwebtoken 3 →
# pointycastle 4)가 갈린다. 테스트 전용인 쪽을 내린다 — 앱에 실리는 암호 라이브러리는 그대로 둔다.
# 둘 중 하나가 pointycastle 범위를 맞추면 지운다.
dependency_overrides:
dart_jsonwebtoken: ^2.17.0
# 앱 아이콘 — 2026-08-13 수령한 공식 `fanuzu logo only.png`의 중앙 1:1 영역을
# 픽셀 변경 없이 사용한다. `assets/brand/` 두 원본은 같은 공식 마크다.
flutter_launcher_icons:
android: true
ios: true
image_path: "assets/brand/app-icon.png"
# Android 8+ 적응형 아이콘 — 마스크가 바깥을 잘라내므로 마크만 담은 전경을 따로 쓴다.
adaptive_icon_background: "#120E25" # 투명 공식 마크 바깥의 브랜드 다크 배경
adaptive_icon_foreground: "assets/brand/app-icon-foreground.png"
# iOS 는 알파 채널을 허용하지 않는다(App Store 심사 거부 사유).
remove_alpha_ios: true
flutter:
uses-material-design: true
# 발주사 Figma 실측 폰트 (2026-09-02). 42dot Sans 가 본문·라벨 전량, ABeeZee 가 숫자·영문 표시.
# 둘 다 Google Fonts OFL 이라 동봉한다. design/design-tokens.md 의 font-* 와 짝이다.
fonts:
- family: 42dot Sans
fonts:
- asset: assets/fonts/42dotSans[wght].ttf
- family: ABeeZee
fonts:
- asset: assets/fonts/ABeeZee-Regular.ttf
assets:
# Figma Iconset 아이콘(lib/core/ui/app_icons.dart).
- assets/icons/